2017-09-13 55 views
-1

我们有一个ID为#some-list的无序列表。在我们的Backbone实现中,当返回某些数据时,列表条目将被渲染并附加到列表中,并显示列表。检测ul列表内容变化jQuery

我们想要检测何时使用JQuery完成这种更改。我们使用$(#some-list).ready()$(#some-list).load(),但看起来他们不工作。

捕捉这些变化的方法有哪些?任何人都可以在这里放一些灯

回答

1

那么你没有发布任何代码,所以很难看到你失败的地方。
但总的来说,我会做的是在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... }) 
+0

这是非常有用监听的事件!出于好奇,触发自定义事件时是否有最佳做法? –

+0

@BoYuan是的 - 最佳做法是不使用jQuery DOM事件,如此答案中所示。使用Backbone的内置事件API来触发骨干事件。如[其他答案](https://stackoverflow.com/a/46207471/2333214)所示。 –

1

由于您使用BackboneJS你可以尝试侦听其事件。

要了解您可以使用哪些事件,请尝试以下代码(首先替换我的*占位符),然后查看浏览器的控制台。

*backboneobject*.on("all", function(e) { 
    console.log(e) 
}); 

后来才通过

*backboneobject*.on("*yourevent*", function() { 
    doStuff(); 
}); 
+0

感谢您的输入。抱歉,我是Backbone的新手,可能是客户端的主干对象?骨干? window.Backbone? –

+0

就像@ Sag1v表示很难给出一个没有任何代码的好回答。您可能有一个由加载函数检索的模型集合。所以代码会是'nameofcollection.on(“change”,function(){doStuff();});' – sbz