我们有一个ID为#some-list的无序列表。在我们的Backbone实现中,当返回某些数据时,列表条目将被渲染并附加到列表中,并显示列表。检测ul列表内容变化jQuery
我们想要检测何时使用JQuery完成这种更改。我们使用$(#some-list).ready()
和$(#some-list).load()
,但看起来他们不工作。
捕捉这些变化的方法有哪些?任何人都可以在这里放一些灯
我们有一个ID为#some-list的无序列表。在我们的Backbone实现中,当返回某些数据时,列表条目将被渲染并附加到列表中,并显示列表。检测ul列表内容变化jQuery
我们想要检测何时使用JQuery完成这种更改。我们使用$(#some-list).ready()
和$(#some-list).load()
,但看起来他们不工作。
捕捉这些变化的方法有哪些?任何人都可以在这里放一些灯
那么你没有发布任何代码,所以很难看到你失败的地方。
但总的来说,我会做的是在ajax回调上触发一个自定义事件(您使用ajax获取内容并将其附加到列表的右侧?)。
例如:
loadData(){
// invoke the ajax request
var def = $.get(...);
def.then(function(result){
// $(#ul) append(result) ...
// now trigger the custom event
$(document).trigger('listRendred');
});
}
现在在不同的地方或脚本,你可以听吧:
$(document).on('listRendred', function(e){ // do what ever... })
由于您使用BackboneJS你可以尝试侦听其事件。
要了解您可以使用哪些事件,请尝试以下代码(首先替换我的*占位符),然后查看浏览器的控制台。
*backboneobject*.on("all", function(e) {
console.log(e)
});
后来才通过
*backboneobject*.on("*yourevent*", function() {
doStuff();
});
感谢您的输入。抱歉,我是Backbone的新手,可能是客户端的主干对象?骨干? window.Backbone? –
就像@ Sag1v表示很难给出一个没有任何代码的好回答。您可能有一个由加载函数检索的模型集合。所以代码会是'nameofcollection.on(“change”,function(){doStuff();});' – sbz
这是非常有用监听的事件!出于好奇,触发自定义事件时是否有最佳做法? –
@BoYuan是的 - 最佳做法是不使用jQuery DOM事件,如此答案中所示。使用Backbone的内置事件API来触发骨干事件。如[其他答案](https://stackoverflow.com/a/46207471/2333214)所示。 –