将回调附加到任意函数?返回:jQuery?

时间:2013-07-26 17:34:14

标签: javascript jquery callback

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

.html( htmlString )            Returns: jQuery

这究竟是什么意思,它与我想要达到的目标相关?

2 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分: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