Jquery 事件处理程序不处理fn.on动态生成的范围

Jquery 事件处理程序不处理fn.on动态生成的范围,jquery,Jquery,我正在用jquery创建一个span。由于该跨度在初始循环中不存在,因此事件处理程序无法工作。我寻找解决方案,并将我的代码如下- $(".uploaded_file_delete").on("click", function(e){ e.preventDefault(); var fileurl = $(this).attr("data-fileurl"); var data = { fileurl: fileurl, action: 'uploa

我正在用jquery创建一个span。由于该跨度在初始循环中不存在,因此事件处理程序无法工作。我寻找解决方案,并将我的代码如下-

$(".uploaded_file_delete").on("click", function(e){
        e.preventDefault();
        var fileurl = $(this).attr("data-fileurl");
        var data = { fileurl: fileurl, action: 'uploaded_file_delete' };
        var deleteonsuccess = $(this).parent();

        $.ajax({
      url: someaction.ajax_url,
      type: 'POST',
      data: data,
      cache: false,
      dataType: 'json',
      success: function(data, textStatus, jqXHR) {.....

此代码适用于硬编码跨距,但不适用于动态生成的跨距。我使用的是jQuery1.12.4。我做错了什么?

您需要将事件处理程序绑定为live而不是on

$('body').live('.uploaded_file_delete', function() {
    // Do stuff here...
});
或者对于较新的jQuery,语法是:

//                    ˇ What to click inside body
$('body').on('click', '.uploaded_file_delete', function() {
    // Do stuff here...
});

当您使用
jQuery 1.4.1
时,您可以使用该函数

说明:为当前和将来匹配当前选择器的所有元素附加事件处理程序

大概是这样的:

$(".uploaded_file_delete").live( "click", function(e){...} );

注意,这个函数在jQuery 1.7上被弃用了,所以如果你升级到这个版本,你应该按照Balázs Varga所说的那样,使用jQuery 1.12.4,你可以使用更新的语法。只需定义父元素(大多数父元素都是
document
body
,但尽可能不同),并添加要添加事件侦听器的元素选择器作为第二个参数

$(document).on( "click", ".uploaded_file_delete", function() {
  // ...
});

还是不行。我想这是因为我的jQuery版本。生活很顺利我希望我能胜过你,但我没有15个声望可以胜过你。感谢您的帮助:)我正在使用wordpress,很多人告诉我不要更换wordpress核心jquery版本,这可能会影响后端的功能。我的问题是,我的jquery版本是1.12.4,您真的应该使用
.on
而不是
.live
@b0xedUpdated my Response@b0xedSorry刚刚看到您更新的答案。它起作用了!谢谢