我有一块JQuery在表中创建一行,在其中一个单元格中有一个由类包围的X.当动态创建然后单击时,单击侦听器不会触发。 这是代码。
$('#add').click(function() {
$( '#table' ).append('<td class="x">X</td></tr>');
});
$('.x').click(function() {
alert('Fired');
});
答案 0 :(得分:4)
由于注册事件处理程序时<td>
元素尚不存在,因此您必须使用live()或delegate()来处理稍后触发的处理程序:
$(".x").live("click", function() {
alert("Fired");
});
答案 1 :(得分:0)
$(".x").live("click", function()
{
alert("Fired");
});
直播将事件添加到DOM中稍后添加的任何内容以及当前的内容。
答案 2 :(得分:0)
而不是
$('.x').click(function() {
alert('Fired');
});
更改为
$('.x').live('click', function() {
alert('Fired');
});
它将click函数绑定到任何带有类x
的已创建元素答案 3 :(得分:0)
您需要将.live函数用于动态生成的内容。
所以替换
$('.x').click(function() {
与
$('.x').live('click',function() {
答案 4 :(得分:0)
您首先要创建所有.x
元素的侦听器(其中可能为零),然后再添加新的.x
元素。
有两种解决方案:一种是使用jQuery live
,另一种是重写代码:
var xClickHandler = function() {
alert('Fired');
};
$('#add').click(function() {
$('#table').append(
$('<td class="x">X</td></tr>').click(xClickHandler);
);
});
答案 5 :(得分:0)
使用live
代替click
:
$('.x').live("click", function() {
alert('Fired');
});
答案 6 :(得分:0)
你要附加到表格的html有一个拼写错误,你错过了beggining tr标签:
$('#add').click(function() {
$( '#table' ).append('<tr><td class="x">X</td></tr>');
});
$('.x').click(function() {
alert('Fired');
});
答案 7 :(得分:0)
我认为你需要使用live方法。 http://api.jquery.com/live/
$('.x').live('click', function() {
// Live handler called.
});