<div id="LangTable"><a class="deletelanguage">delete</a></div>
$('.deletelanguage').click(function(){
alert("success");
});
<a>
,则$('.deletelanguage').click
不起作用。例如
function CreateRow(jdata) {
$('#LangTable').append('<a class="deletelanguage">delete</a>');
}
$.ajax({
url: "/jobseeker/profile/",
success: CreateRow
});
$('.deletelanguage').click
的{{1}}无效。jsfiddle示例:http://jsfiddle.net/suhailvs/wjqjq/
注意:CSS在这里工作正常。
我想让这些新附加的<a>
使用jQuery click。
答案 0 :(得分:163)
问题是.click仅适用于页面上已有的元素。
如果要连接未来元素,则必须使用类似on
的内容
$("#LangTable").on("click",".deletelanguage", function(){
alert("success");
});
答案 1 :(得分:69)
当您使用$('.deletelanguage').click()
注册事件处理程序时,它会将处理程序仅添加到执行代码时存在于dom中的那些元素
您需要在此处使用基于委派的事件处理程序
$(document).on('click', '.deletelanguage', function(){
alert("success");
});
答案 2 :(得分:18)
$('body').delegate('.deletelanguage','click',function(){
alert("success");
});
或
$('body').on('click','.deletelanguage',function(){
alert("success");
});
答案 3 :(得分:6)
由于该类是动态添加的,因此您需要使用event delegation来注册事件处理程序,如:
$('#LangTable').on('click', '.deletelanguage', function(event) {
event.preventDefault();
alert("success");
});
这会将您的事件附加到#LangTable
元素中的任何锚点,
减少必须检查整个document
元素树并提高效率的范围。
答案 4 :(得分:2)
这是 FIDDLE
与您的代码相同,但它将适用于动态创建的元素。
$(document).on('click', '.deletelanguage', function () {
alert("success");
$('#LangTable').append(' <br>------------<br> <a class="deletelanguage">Now my class is deletelanguage. click me to test it is not working.</a>');
});
答案 5 :(得分:2)
在定义事件的那一点上,click事件不存在。您可以使用直播或委派活动。
$('.deletelanguage').live('click',function(){
alert("success");
$('#LangTable').append(' <br>------------<br> <a class="deletelanguage">Now my class is deletelanguage. click me to test it is not working.</a>');
});
答案 6 :(得分:1)
我测试了一个适合我的简单解决方案! 我的javascript是在一个单独的文件中。我做的是我将新元素的javascript放入用ajax加载的html中,它对我来说很好用! 这适用于那些拥有javascript大文件的人!