Php javascript事件未处理脚本
我的javascript遇到了一个棘手的问题,基本上我已经编写了以下javascript来删除页面中动态添加的li选项卡,但它没有处理,javascript是:Php javascript事件未处理脚本,php,javascript,html,css,Php,Javascript,Html,Css,我的javascript遇到了一个棘手的问题,基本上我已经编写了以下javascript来删除页面中动态添加的li选项卡,但它没有处理,javascript是: $(document).ready(function(e) { $(".close").on("click", this, function() { $(this).closest("li").remove(); var panelId = $(this).closest('li').
$(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;
})
});
$(文档).ready(函数(e)
{
$(“.close”)。在(“单击”时,此函数()
{
$(this).最近的(“li”).remove();
var panelId=$(this.nexist('li').attr('href');
//$(this).最近(“#content”).remove();
//$('#tab1')。删除();
$(“#导航选项卡a:最后一个”).tab('show');
$('#close1')。在('click',this,function()上
{
$('.tab1').remove();
$(“#导航选项卡a:最后一个”).tab('show');
})
$(“#close2”)。在('click',this,function()上
{
$('.tab2').remove();
$(“#导航选项卡a:最后一个”).tab('show');
})
$('#close3')。在('click',this,function()上
{
$('.tab3').remove();
$(“#导航选项卡a:最后一个”).tab('show');
})
})
如果(计数器尝试以下操作:
$(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;
})
});
$(文档).ready(函数(e)
{
$(文档)。在(“单击”,“关闭”,函数()上)
{
$(this).最近的(“li”).remove();
var panelId=$(this.nexist('li').attr('href');
//$(this).最近(“#content”).remove();
//$('#tab1')。删除();
$(“#导航选项卡a:最后一个”).tab('show');
$(文档)。在('单击','关闭1',函数()上
{
$('.tab1').remove();
$(“#导航选项卡a:最后一个”).tab('show');
})
$(文档)。在('单击','关闭2',函数()上
{
$('.tab2').remove();
$(“#导航选项卡a:最后一个”).tab('show');
})
$(文档)。在('单击','关闭3',函数()上
{
$('.tab3').remove();
$(“#导航选项卡a:最后一个”).tab('show');
})
})
如果(计数器,问题是您首先删除li
,然后尝试读取它的一个属性
在完成所有需要访问它或其属性的操作之后,您需要删除li
i、 e
在读取id
之前,您正在删除li
,因此panelId
将未定义
,您还必须使用基于事件委派的事件处理
$(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;
})
$(文档).ready(函数(e){
$('#close1')。在('click',this,function()上{
$('.tab1').remove();
$(“#导航选项卡a:最后一个”).tab('show');
})
$(“#close2”)。在('click',this,function()上{
$('.tab2').remove();
$(“#导航选项卡a:最后一个”).tab('show');
})
$('#close3')。在('click',this,function()上{
$('.tab3').remove();
$(“#导航选项卡a:最后一个”).tab('show');
})
$(文档)。在(“单击”,“关闭”,函数()上){
var panelId=$(this.nexist('li').attr('href');
$(this).最近的(“li”).remove();
$(“#导航选项卡a:最后一个”).tab('show');
})
如果(counter最明显的原因是,当您绑定事件时,DOM中没有.close
元素。一个简单的解决方案是使用事件委派
,这也可以通过实现。换句话说,事件将绑定到另一个元素,即所需目标元素的父元素。这样,您只需你必须绑定一次事件,而不必在运行时的每个新元素上重新绑定它
$(window).click('.close',yourCloseFunction);
您应该首先将$(this.nexist('li')
的结果存储到变量中。这样,您将查询它两次。存储结果时,您首先执行的操作也与此无关。@Chips\u 100-同意。将其缓存到变量中会提高效率。缓存还会删除上述操作顺序的相关性。
$(window).click('.close',yourCloseFunction);