0

当您单击另一个链接时,我正在 jquery 中创建一个链接。

问题是我想在您单击此新链接时生成警报,但不会触发操作!

$('#test').click(function() {
    $("<div/>").html('<a href="#" id="remove">Remove</a>').appendTo("#results");
});

$('#remove').click(function() {
    alert('lol');
});​

代码链接:http: //jsfiddle.net/LARef/

4

3 回答 3

0

在您运行时

$('#remove').click(function() {
    alert('lol');
});

#remove元素尚不存在..(因为它是在您单击第一个链接时添加的

使用该.delegate()方法(或者.on()如果您将 jquery 升级到 1.7+

$('#results').delegate('#remove', 'click', function(){
    alert('lol');
});

演示在http://jsfiddle.net/LARef/2/


v1.7+ 的等价物是

$('#results').on('click', '#remove', function(){
    alert('lol');
});
于 2012-04-11T13:32:02.240 回答
0

创建元素后必须绑定事件。将您的代码更改为此,它将起作用:

$('#test').click(function ()
{
    $("<div/>").html('<a href="#" id="remove">Remove</a>').appendTo("#results");
    $('#remove').click(function ()
    {
        alert('lol');
    });
});
于 2012-04-11T13:32:04.943 回答
0

你应该使用委托

$('#test').click(function() {
    $("<div/>").html('<a href="#" id="remove">Remove</a>').appendTo("#results");
});

$(window).delegate('#remove','click',  function() {
    alert('lol');
});​

http://jsfiddle.net/LARef/1/

于 2012-04-11T13:32:22.260 回答