[英]Javascript append + click remove them
我有一个问题,我已经解决了,但这太烦人了。
我有一个 js 代码,当使用“追加”按钮按下按钮时,它会放下一些 html 代码,并使用该代码为 x 按钮提供一个 id,并为容器元素提供一个 id。 我想使用这些 id-s 通过单击功能来识别它们,以删除 html 代码:
var num = 0;
$('.button').click(funcion(){
num++;
var code = '\
<div class="container" id="text' + num + '">\
<div id="x' + num + '">\
x\
</div>\
Some stuff\
</div>\
';
$('.puthere').append(code);
$('#x' + num).click(function(){
$('#text' + num).remove();
});
});
现在烦人的部分是 x 上的点击功能。 我期望的是,这段代码会像这样工作:第一次点击“按钮”类元素应该给出这个代码:
$('#x1').click(function(){
$('#text1').remove();
});
第二次点击后,我应该有这个:
$('#x1').click(function(){
$('#text1').remove();
});
$('#x2').click(function(){
$('#text2').remove();
});
相反,我在第二次点击后得到的是:
$('#x1').click(function(){
$('#text2').remove();
});
$('#x2').click(function(){
$('#text2').remove();
});
所以它总是 x 按钮想要删除的最后一个元素。 我的问题是,为什么我的“num”变量可以在 #x1 处保持为“1”,而在 #text1 处则不然?
我的解决方案是解决父元素:
$('#x' + num).click(function(){
$(this).parent('.container').remove();
});
我知道,也有“实时”功能,我可以使用什么,而且我不需要弄乱 id-s,但这似乎更重。 那是对的吗? 或者我把事情过于复杂而没有提高效率?
这是因为 num 是全局的,您可以在创建第二个按钮后访问它。 要解决此问题,您可以使用匿名自执行函数包装您的代码:
(function(num) {
$('#x' + num).click(function(){
$('#text' + num).remove();
});
})(num);
或者更好地只使用一键
$('.parent').on('click', '.container > div', function() {
$(this).parent().remove();
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.