jQuery单击无法处理附加的dom

时间:2011-08-09 08:15:34

标签: jquery

我附上了一些像这样的div:

var to = "Some content"
$("#key").append("<div class=\"cont\">"+to+"  <span ded="+ lastid +" class=\"\contspan\">X</span></div>  ");

然后我尝试通过这样做来绑定div上的事件与类cont

$('.cont').delegate('div', 'click', function() {
    $("#logger").html("click")
});

但这不起作用? 我哪里出错?

修改: 我试图将一个bacground颜色放到类cont上,并且颜色是为了表明类ID添加得很好

3 个答案:

答案 0 :(得分:4)

你没有正确使用委托,试试这个:

$('#key').delegate('div.cont', 'click', function() {
    //var text1 = $(this).attr("ded");
    $("#logger").html("click")
});

您在不会更改的元素('#key')上调用委托方法,然后将动态元素的选择器('div.cont')作为第一个参数传递给它。

答案 1 :(得分:0)

尝试使用.live()函数代替委托。

$('.cont').live('click', function() {
    // var text1 = $(this).attr("ded");
    $("#logger").html("click");
}

答案 2 :(得分:0)

你的.cont中没有<div>

http://sandbox.phpcode.eu/g/1cbbd.php

<div id="key"> 

</div> 
<div id="logger"> 
</div> 
<script> 
var to = "Some content"; 
var lastid = "test"; 
$("#key").append("<div class='cont'>"+to+"<span ded='"+ lastid +"' class='contspan'>X</span></div> "); 
$('.cont').delegate('span', 'click', function() { 
    //var text1 = $(this).attr("ded"); 
    $("#logger").html("click") 
}); 
</script>