一些方便的函数,如 jquery html() setter 没有回调。有没有办法为它们手动附加回调,例如只有在元素添加到 DOM 时才能添加事件侦听器?我在 jquery 文档上看到
.html( htmlString ) Returns: jQuery
它到底是什么意思,与我想要实现的目标相关吗?
一些方便的函数,如 jquery html() setter 没有回调。有没有办法为它们手动附加回调,例如只有在元素添加到 DOM 时才能添加事件侦听器?我在 jquery 文档上看到
.html( htmlString ) Returns: jQuery
它到底是什么意思,与我想要实现的目标相关吗?
DOM 交互是同步的,并且返回 jQuery 元素是大多数 jQuery 修改方法(和插件)所做的,因此您可以轻松地将它们链接起来。因此,一旦 .html 返回,您就可以确定它已经在 DOM 中了:
$(el).html( htmlString ).on('click', function() {});
只有在执行异步操作(例如发出 AJAX 请求或等待动画完成)时,回调才有意义。
当它说它返回 jQuery 时,基本上意味着它返回 jQuery 对象,以便您可以链接方法。像这样:
$(".someElement").css("background, "green).html("Bananas");
要将事件侦听器添加到动态引入的元素,您需要使用事件委托。
您不能将侦听器直接附加到元素上,因为它还没有准备好接收它。相反,您需要将侦听器附加到父元素。这称为事件委托。您将处理事件的工作委托给另一个元素。像这样:
// Do this:
$(document).on("click", ".myNewElement", function() {
//My event code in here
});
//Not this
$(".myNewElement").on("click", function() {});
他们返回 jQuery 的原因是你可以像这样链接你的方法:
$(".oldElement").html(".newElement").on("click", ".newElement", function(){});
您可能还想阅读$.Deffered。