我有这样的代码
$(document).ready(function(){
$(".add").bind ('click',
function ()
{
$('.main').append('<div class="add">Add element 2</div>');
});
});
</script>
<div class="main"><div class="add">Add element</div></div>
当虚拟对象“.add”附加到“.main”时,jquery对点击它们没有反应
答案 0 :(得分:5)
是的,因为您在创建新元素之前仅将操作绑定到现有的 .add 元素。
您需要将点击绑定到 .main 元素,并将特定选择器作为 on 函数中的第二个参数提供。
$('.main').on('click', '.add', function (){
$('.main').append('<div class="add">Add element 2</div>');
});
真的非常直观。使用您的代码,您说在页面上找到所有添加元素并将此函数绑定到每个。因此,稍后添加的那些将不会绑定此函数。
使用正确的代码,你会说找到main元素并将一个函数绑定到它,但只在单击带有.add类的子元素时执行该函数。
答案 1 :(得分:0)
请勿使用.bind()
,而是使用.on()
,或者,如果您有jQuery的1.7之前的版本.delegate()
。
绑定是一次性操作,它不会侦听DOM中的新项目。