我有一块JQuery在表中创建一行,并在其中一个单元格中有一个由类包围的X.当它是动态创建的,然后点击点击监听器不会触发。 这是代码。jquery动态创建链接
$('#add').click(function() {
$('#table').append('<td class="x">X</td></tr>');
});
$('.x').click(function() {
alert('Fired');
});
我有一块JQuery在表中创建一行,并在其中一个单元格中有一个由类包围的X.当它是动态创建的,然后点击点击监听器不会触发。 这是代码。jquery动态创建链接
$('#add').click(function() {
$('#table').append('<td class="x">X</td></tr>');
});
$('.x').click(function() {
alert('Fired');
});
由于<td>
元素尚不存在在您注册的事件处理程序,您必须使用live()或delegate()的处理程序稍后触发:
$(".x").live("click", function() {
alert("Fired");
});
$(".x").live("click", function()
{
alert("Fired");
});
现场增加了事件到以后在DOM中添加的任何内容以及当前的内容。
而不是
$('.x').click(function() {
alert('Fired');
});
更改这个
$('.x').live('click', function() {
alert('Fired');
});
它结合了点击功能与类创建的任何元素x
您需要使用.live功能内容的动态生成。
所以用
$('.x').live('click',function() {
你是第一个创建监听到所有.x
元素(其中有大概为零),然后再加入新的元素.x
更换
$('.x').click(function() {
。
解决办法有两种:一种是使用jQuery live
,另一种是重写代码:
var xClickHandler = function() {
alert('Fired');
};
$('#add').click(function() {
$('#table').append(
$('<td class="x">X</td></tr>').click(xClickHandler);
);
});
使用live
而不是click
:
$('.x').live("click", function() {
alert('Fired');
});
要附加到HTML该表有错字,您错过了开始的tr标记:
$('#add').click(function() {
$('#table').append('<tr><td class="x">X</td></tr>');
});
$('.x').click(function() {
alert('Fired');
});
我认为你需要使用live方法。 http://api.jquery.com/live/
$('.x').live('click', function() {
// Live handler called.
});
您并未在新行开始处添加“TR”。 –