Jquery 事件处理程序不处理fn.on动态生成的范围
我正在用jquery创建一个span。由于该跨度在初始循环中不存在,因此事件处理程序无法工作。我寻找解决方案,并将我的代码如下-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
$(".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刚刚看到您更新的答案。它起作用了!谢谢