2014-10-08 139 views
0

我有一个简短的问题。我试图在两个“容器”div不再有任何div的情况下触发事件。如何触发if语句jQuery

我的剧本至今如下:

if (($('#Summary2 div').length) + ($('#Summary3 div').length)) == 0) { 
    alert("hello"); 
} 

我的问题是,我要如何得到这段代码触发?我认为会发生的事情是,它会被读取一次,然后坐在那里闲置,因为没有任何东西触发它。

亲切的问候,并感谢您, 摹

+1

无论是检查每一个你从那里取出一些时间(在这种情况下,具有专用于此的功能是有帮助的 - 除非通过该功能,否则不要从中移除元素),或者效率较低,请设置间隔以便随时进行检查。我强烈建议第一种方法,除非你的代码太乱,以至于你从471个不同的地方删除相同的元素。 – Amadan 2014-10-08 08:13:59

+1

哦,另一种选择 - ['MutationObserver'](https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver),一个相当新的规范,但适用于所有(ISH)当前浏览器。 – Amadan 2014-10-08 08:24:53

回答

-1

试试这个代码。在“删除”事件可能触发。

$("#Summary2 div, #Summary3 div").on("remove", function() { 
    if (($('#Summary2 div').length) + ($('#Summary3 div').length)) == 0) { 
     alert("hello"); 
    } 
}); 
+0

据我所知,没有'remove'事件。有'DOMNodeRemoved',这是弃用。 – Amadan 2014-10-08 08:29:17

+0

有你添加jquery-ui。 请参阅http://jsfiddle.net/xalvin11/Lcu6wmL7/ – 2014-10-08 08:32:26

+0

应该在答案中注明;你和OP都没提到jQuery-UI。此外,它只适用于jQuery'.remove()';如果通过任何其他方式(例如标准DOM'removeChild')删除元素,它将不会触发。 – Amadan 2014-10-08 08:55:24

0

我建议你检查的具体时间格让我们说每1小时,然后你可以使用setInterval的,如下图所示: -

setInterval(
function(){ 
if ($('#Summary2 div').length + $('#Summary3 div').length == 0) { 
    alert("hello"); 
} 
}, 60 * 60 * 1000); 
+0

@downvoter请给出原因 – Neel 2014-10-08 08:29:38