Javascript事件未处理脚本
javascript event not processing script
我在我的javascript上得到一个尴尬的问题,基本上我已经写了以下javascript来删除动态添加的li选项卡在我的页面,但它不是处理,javascript是:
$(document).ready(function(e)
{
$(".close").on("click", this, function()
{
$(this).closest("li").remove();
var panelId = $(this).closest('li').attr('href');
// $(this).closest('#content').remove();
// $('#tab1').remove();
$('#nav-tabs a:last').tab('show');
$('#close1').on('click',this, function()
{
$('.tab1').remove();
$('#nav-tabs a:last').tab('show');
})
$('#close2').on('click',this, function()
{
$('.tab2').remove();
$('#nav-tabs a:last').tab('show');
})
$('#close3').on('click',this, function()
{
$('.tab3').remove();
$('#nav-tabs a:last').tab('show');
})
})
if(counter <= 1){
counter = 1;
}else {
counter--;
}
return false;
})
});
问题是当i/用户点击。close[按钮有关闭类]这个javascript不做任何事情,即使它应该删除最近的li标签;此外,当我将它粘贴到添加javascript[javascript添加li标签]时,它开始工作!!
问题是您首先删除li
,然后试图读取其属性之一。
你需要删除之后的li
做所有需要访问它或它的属性的东西。
。
$(document).ready(function(e) {
$(document).on("click", ".close", function() {
var panelId = $(this).closest('li').attr('href'); // get the href first
$(this).closest("li").remove(); // now delete the li
...
});
});
试试这个:
$(document).ready(function(e)
{
$(document).on("click", ".close", function()
{
$(this).closest("li").remove();
var panelId = $(this).closest('li').attr('href');
// $(this).closest('#content').remove();
// $('#tab1').remove();
$('#nav-tabs a:last').tab('show');
$(document).on('click','#close1', function()
{
$('.tab1').remove();
$('#nav-tabs a:last').tab('show');
})
$(document).on('click','#close2', function()
{
$('.tab2').remove();
$('#nav-tabs a:last').tab('show');
})
$(document).on('click','#close3', function()
{
$('.tab3').remove();
$('#nav-tabs a:last').tab('show');
})
})
if(counter <= 1){
counter = 1;
}else {
counter--;
}
return false;
})
});
您在读取id
之前删除li
,因此panelId
将是undefined
,您还必须使用基于事件委托的事件处理
$(document).ready(function(e) {
$('#close1').on('click', this, function() {
$('.tab1').remove();
$('#nav-tabs a:last').tab('show');
})
$('#close2').on('click', this, function() {
$('.tab2').remove();
$('#nav-tabs a:last').tab('show');
})
$('#close3').on('click', this, function() {
$('.tab3').remove();
$('#nav-tabs a:last').tab('show');
})
$(document).on("click", ".close", function() {
var panelId = $(this).closest('li').attr('href');
$(this).closest("li").remove();
$('#nav-tabs a:last').tab('show');
})
if (counter <= 1) {
counter = 1;
} else {
counter--;
}
return false;
})
最明显的原因是当您绑定事件时,DOM中没有.close
元素。一个简单的解决方案是使用event delegation
,这也可以通过jQuery on()实现。换句话说,事件将绑定到另一个元素,即期望的目标元素的父元素。这样,您只需要绑定一次事件,而不必在运行时的每个新元素上重新绑定它。例如
$(window).click('.close',yourCloseFunction);
相关文章:
- 未处理的拒绝MongoError:无法连接到MongoDB中的服务器
- 错误“;未处理'错误'事件“;在运行yo发电机之后
- js脚本未加载到jinja2模板中
- 以纯文本加载的脚本-未声明纯文本文档的字符编码
- jQuery on('单击',..)未处理附加的元素
- 当没有互联网连接时,谷歌地图Java脚本API处理
- NodeJS未处理的拒绝错误:Can't在发送标头后设置标头
- 可以clearTimeout删除JavaScript中已触发超时事件的未处理回调
- Jquery脚本未在运行时加载编辑:意外的令牌
- 未处理的 JavaScript 异常终止 MSAppHost/WWAHost.exe
- 图像翻转脚本未按预期工作
- 有没有一个jquery marquee插件/脚本可以处理不同宽度的图像
- JS脚本未按预期工作,没有错误消息
- 脚本无法处理.load'IE中的ed DIV
- 未处理角度指令
- in脚本未被编译
- Jquery 脚本未正确加载
- Vue.js路由未处理任何方法
- Javascript事件未处理脚本
- 未调用内容脚本消息处理程序