click()不适用于附加TD的ajax jquery

时间:2013-11-29 09:38:07

标签: jquery ajax

您好我有一个ajax功能,从服务器端获取数据并添加附加到表行

 var str =$(".note-list");
$.ajax({    
            type: "GET",
            url: "abc.htm",

            success: function(msg){    
                 var s="<tr class='fc-staff'>";             

alert("success"+str);

            $.each( msg, function(i,value ) {

                     s=s+"<td class='fc-widget-content fc-first'>"+value+"<i      
        class='icon-remove'></i></td> ";


                });
            s=s+"</tr>";
            str.html(s);
            $("#popup").show();
        },
 error : function(e) {
        alert('Error: ' + e);
    }
    });

 });

对于从上面添加jquery点击功能无效的td。 注意。它适用于其他表中的其他td

我的jquery函数

$("td").click(function() {
        alert("tdclicked"); // Its not working
        alert($(this).text());
    });

FUI,

即使在视图页面源中也没有显示附加的源,但在UI中它即将到来enter image description here

我的网页来源是

<table class="fc-border-separate note-list" style="width: 100%"
                                    cellspacing="0">
                // Not showing appended td                  
</table>

帮助我让jquery函数适用于这个附加的td。

提前致谢

4 个答案:

答案 0 :(得分:3)

在加载DOM之后附加td元素时,需要使用委托事件处理程序。试试这个:

$(".note-list").on('click', 'td', function() {
    alert("tdclicked"); // Its not working
    alert($(this).text());
});

答案 1 :(得分:1)

试试这个

$("table").on('click', 'td', function() {
    alert($(this).text());
});

您在加载页面后添加元素,因此您必须委派click事件。

了解更多信息,请查看文档http://api.jquery.com/on/

上的jquery

希望这会有所帮助

答案 2 :(得分:0)

您正在访问str = $('.notelist'),就好像它是唯一的元素一样。您需要循环所有具有此类的表。

答案 3 :(得分:0)

@Rory McCrossan说对了:)你也可以这样做:

$(document).on("click", "#yourTableID td" , function() {
     doStuff();
});