jquery html()setter等一些方便的函数没有回调函数。有没有办法为它们手动附加回调,例如,只有在将元素添加到DOM时才能添加事件侦听器?我在jquery文档中看到了
.html( htmlString ) Returns: jQuery
这究竟是什么意思,它与我想要达到的目标相关?
答案 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。