2012-04-11 114 views
0

我在jquery中创建一个链接,当你点击另一个链接。警报jquery函数

问题是我想在点击这个新链接时生成一个警报,但不会触发该操作!

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

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

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

+0

在您绑定的事件处理程序,以'#remove'的那一刻,元素呢尚不存在。在创建元素后绑定事件处理程序。 – 2012-04-11 13:31:22

回答

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/

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'); 
}); 
0

你必须在事件发生后绑定你创建元素。 更改您的代码这一点,它的工作:

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