Jquery动态创建链接

时间:2011-08-05 14:55:47

标签: javascript jquery

我有一块JQuery在表中创建一行,在其中一个单元格中有一个由类包围的X.当动态创建然后单击时,单击侦听器不会触发。 这是代码。

$('#add').click(function() {
   $( '#table' ).append('<td class="x">X</td></tr>');
});
$('.x').click(function() {
  alert('Fired');
});

8 个答案:

答案 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.
});