关于html:ajax调用后jQuery点击功能不起作用?

jQuery click function doesn't work after ajax call?

本问题已经有最佳答案,请猛点这里访问。

jquery click函数在这里工作正常

1
2
3
4
5
delete    

$('.deletelanguage').click(function(){
    alert("success");
});

但是如果我用Ajax设置了一些$('.deletelanguage').click就不起作用了。

例如

1
2
3
4
5
6
7
8
function CreateRow(jdata) {
    $('#LangTable').append('delete');
}

$.ajax({        
    url:"/jobseeker/profile/",
    success: CreateRow
});

现在,最后一个$('.deletelanguage').click不起作用。

jfiddle示例:http://jsfiddle.net/suhailvs/wjqjq/

注意:这里的CSS工作正常。

我想让这些新附加的使用jquery click。


唯一的问题是,.click作品已经在页面元素。你有这样的事情,如果你使用的是未来的on线路上的元素

1
2
3
$("#LangTable").on("click",".deletelanguage", function(){
  alert("success");
});


当你使用一个事件处理程序,它$('.deletelanguage').click()登记的增加,这些元素只存在于处理器中执行的代码是当礼物

你需要使用的代表在基于事件的处理

1
2
3
$(document).on('click', '.deletelanguage', function(){
    alert("success");
});


1
2
3
$('body').delegate('.deletelanguage','click',function(){
    alert("success");
});

1
2
3
$('body').on('click','.deletelanguage',function(){
    alert("success");
});


由于类是由动,你需要使用事件的事件处理程序的委托登记样:

1
2
3
4
$('#LangTable').on('click', '.deletelanguage', function(event) {
    event.preventDefault();
    alert("success");
});

这会将你的事件的任何锚在#LangTable元,一个检查的范围到整个document元树和提高效率。

小提琴的演示程序


The Click事件(是不是有点定义为在事件。你可以使用Live或事件的代表。

1
2
3
4
$('.deletelanguage').live('click',function(){
    alert("success");
    $('#LangTable').append(' ------------ Now my class is deletelanguage. click me to test it is not working.');
});


这里的小提琴

但它将同你的代码工作的在线动态创建的元素。

1
2
3
4
$(document).on('click', '.deletelanguage', function () {
    alert("success");
    $('#LangTable').append(' ------------ Now my class is deletelanguage. click me to test it is not working.');
});


我测试的解决方案是简单的为我工作!我是在单独的JavaScript JavaScript文件。我做的是我放的是新的JavaScript的HTML元素,与这是Ajax加载和它的作品精美,是我!这是那些具有大的Javascript文件!!!!!!!!