Javascript jQuery-全局变量的问题

Javascript jQuery-全局变量的问题,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我有一个问题,可能是由于缺乏使用全局变量的经验,导致了一些问题 请在单击“单击我”按钮时检查此项我正在使用全局变量动态设置某些元素的id 我对此代码有问题: $("#service-sets").on('click', "#facebook-del-"+a, function() { var aa = $("#facebook-del-"+a).parent().parent().parent().attr("id"); $('#'+aa).remove()

我有一个问题,可能是由于缺乏使用全局变量的经验,导致了一些问题

请在单击“单击我”按钮时检查此项我正在使用全局变量动态设置某些元素的id

我对此代码有问题:

$("#service-sets").on('click', "#facebook-del-"+a, function() {           
    var aa = $("#facebook-del-"+a).parent().parent().parent().attr("id");
    $('#'+aa).remove();
由于
.on('click')
中的
“#facebook del-”+a
不起作用而未进入click事件,而click事件中的一个正在起作用(显示值
“#facebook-del-1”

当我像这样修改代码时,它没有问题

$("#service-sets").on('click', "#facebook-del-1", function() {           
    var aa = $("#facebook-del-"+a).parent().parent().parent().attr("id");
    $('#'+aa).remove();
你可以在这里查看

那么我犯了什么错误呢


谢谢

问题源于这样一个事实,即与它看起来的相反,“a”变量是而不是全局变量。它位于JSFIDLE本身为您创建的函数中

将左侧的控件设置为将代码放在
中,而不是放在“onload”处理程序中,这样就可以工作了

此外,没有理由使用代码删除添加的标记。也就是说,查找元素、获取其“id”值,然后通过“id”重新查找它的过程是毫无意义的。一旦您找到了带有这些“.parent()”调用的元素(这本身是一种非常脆弱的处理方式;最好给外部包装一个类,然后使用
.nearest(“.whatest”)
),您就找到了它,没有理由再找到它


编辑-现在我想起来了,虽然我所说的“a”是真的-它不是真正的全球性的-在这种情况下它不应该重要。然而,这是一个经常引起JSFIDLE不愉快的原因(当然,祝福他们的心)。

问题源于这样一个事实,与它看起来的相反,“a”变量不是全局变量。它位于JSFIDLE本身为您创建的函数中

将左侧的控件设置为将代码放在
中,而不是放在“onload”处理程序中,这样就可以工作了

此外,没有理由使用代码删除添加的标记。也就是说,查找元素、获取其“id”值,然后通过“id”重新查找它的过程是毫无意义的。一旦您找到了带有这些“.parent()”调用的元素(这本身是一种非常脆弱的处理方式;最好给外部包装一个类,然后使用
.nearest(“.whatest”)
),您就找到了它,没有理由再找到它

编辑-现在我想起来了,虽然我所说的“a”是真的-它不是真正的全球性的-在这种情况下它不应该重要。然而,这是一个经常引起JSFIDLE愤怒的原因(当然,祝福他们的心)

这里,

[id^=facebook del]
是那些元素(交叉),它们是
id
facebook el
开始的。因此,这样设置委托事件将不需要使用全局变量
a
进行任何索引

$(this).closest('div.tag')
目标到
div.tag
,它是单击的叉的容器

这里,

[id^=facebook del]
是那些元素(交叉),它们是
id
facebook el
开始的。因此,这样设置委托事件将不需要使用全局变量
a
进行任何索引


$(this).最接近('div.tag')
目标到
div.tag
,它是点击交叉的容器。

只有在点击
#facebook按钮的回调内,你才能增加
a
。运行时:

$("#service-sets").on('click', "#facebook-del-"+a, function() {           
    ..
});
a
仍然是0,您只需处理
#facebook-del-0
的每个点击事件,这将永远不存在

您可以使用类来代替删除。将关闭按钮设置为“facebook del”类,然后使用此按钮将其关闭:

$("#service-sets").on('click', '.facebook-del', function() {           
    $(this).parent().parent().parent().remove();
});

只有在回调函数中单击
#facebook按钮时,才能增加
a
。运行时:

$("#service-sets").on('click', "#facebook-del-"+a, function() {           
    ..
});
a
仍然是0,您只需处理
#facebook-del-0
的每个点击事件,这将永远不存在

您可以使用类来代替删除。将关闭按钮设置为“facebook del”类,然后使用此按钮将其关闭:

$("#service-sets").on('click', '.facebook-del', function() {           
    $(this).parent().parent().parent().remove();
});

什么是
“#facebook del-”+a
中的变量“a”?它是一个全局变量“a”。请检查我提供的JSFIDLE
“#facebook del-”+a
”中的变量“a”是什么?它是一个全局变量“a”。请查看我提供的JSFIDLE,这是一种更好的方法。是的,这是一种更好的方法。