0

一些方便的函数,如 jquery html() setter 没有回调。有没有办法为它们手动附加回调,例如只有在元素添加到 DOM 时才能添加事件侦听器?我在 jquery 文档上看到

.html( htmlString )            Returns: jQuery

它到底是什么意思,与我想要实现的目标相关吗?

4

2 回答 2

2

DOM 交互是同步的,并且返回 jQuery 元素是大多数 jQuery 修改方法(和插件)所做的,因此您可以轻松地将它们链接起来。因此,一旦 .html 返回,您就可以确定它已经在 DOM 中了:

$(el).html( htmlString ).on('click', function() {});

只有在执行异步操作(例如发出 AJAX 请求或等待动画完成)时,回调才有意义。

于 2013-07-26T17:38:57.533 回答
1

当它说它返回 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

于 2013-07-26T17:39:48.260 回答