jQuery选择器对Javascript代码之后出现的选择器有效吗?
我有一个Javascript代码,可以在点击时完成一些事情,但它什么都没做。它本质上是一个滑动进来的窗格上的按钮。当我点击按钮时,我期待着发生一些事情。但是,这个按钮在AJAX调用完成时填充,因为AJAX调用正在获取包含该按钮的HTML 下面是我设置按钮的代码:jQuery选择器对Javascript代码之后出现的选择器有效吗?,javascript,jquery,html,ajax,Javascript,Jquery,Html,Ajax,我有一个Javascript代码,可以在点击时完成一些事情,但它什么都没做。它本质上是一个滑动进来的窗格上的按钮。当我点击按钮时,我期待着发生一些事情。但是,这个按钮在AJAX调用完成时填充,因为AJAX调用正在获取包含该按钮的HTML 下面是我设置按钮的代码: $("#btn-delete-setup").on("click", function() { console.log("clicked"); _deleteFunction(); //return false; }
$("#btn-delete-setup").on("click", function() {
console.log("clicked");
_deleteFunction();
//return false;
});
由于Javascript是在AJAX调用中呈现该窗格和按钮之前加载的,这是否意味着该按钮将不会响应我的.on(“单击”)
代码?我的按钮没有响应是因为当Javascript加载时,它没有找到要绑定到的按钮吗?但是,这个按钮在AJAX调用完成时填充
因此,这是事件委派的完美案例,这意味着在加载页面时无法绑定元素上的事件,因此您需要将事件委派给最近的静态父级:
$("closestStaticparent").on("click", "#btn-delete-setup" function(e){
console.log("clicked");
_deleteFunction();
//return false;
});
$(“closestStaticparent”)
是页面元素,就像任何div容器/包装器一样,或者说是在ajax调用之前dom中的元素
尽管
$('body'),$(document)或$(document.body)
始终可用于委派活动。如果您担心按钮未准备好,请尝试:
$(document).ready(function(){
$("#btn-delete-setup").on("click", function() {
console.log("clicked");
_deleteFunction();
//return false;
});
});
希望这有帮助,因此,您的问题的答案是:不,如果在加载脚本后附加元素(例如,在文档准备就绪时),则此代码将不起作用 但是使用jQuery:)可以轻松实现这一点:
$(document).on("click","#btn-delete-setup", function() {
console.log("clicked");
_deleteFunction();
//return false;
});
本帖向您提供的完整解决方案(副本):