2012-07-03 72 views
0

我正在尝试将事件添加到页面卸载时触发的元素。我想将事件发布到元素,因为我需要访问私有函数。将卸载事件添加到div

我决定尝试向我的元素添加一个卸载事件,然后在window.unload事件期间调用此函数,因为元素从未正常传递卸载事件。

不幸的是我设法创建了一个无限循环,我尝试使用jQuery函数'one'来试图停止循环,并且还尝试在第一次调用之后手动删除卸载甚至绑定。仍然没有运气。我做了一个JsFiddle,但决定不链接它,因为它会使你的浏览器崩溃,所以这里是代码。

<div id="myDiv"></div> 
$('#myDiv').one('unload', function() { alert('Infinite loop incomming. Sorry :('); }); 
$(window).unload(function() { $('#myDiv').unload(); }); 

任何人都可以提供任何建议或更好的解决方案吗?

+0

什么浏览器和操作系统您使用的?我无法用您提供的代码重新创建无限循环。 –

+1

您打电话的警报只是打破卸载事件 –

+1

*我想将事件记录到元素,因为我需要访问私人功能。*什么? – Esailija

回答

1

我在另一个问题 - Add jQuery function to specific elements中找到了我正在寻找的东西。

本质上,我可以使用jQuery'bind'和'trigger'将自定义事件添加到DOM元素并在以后调用它。

例子:

<div id="myDiv"></div> 

    $('#myDiv').bind('myUnloadFunction', function() { alert('No more loop :D'); }); 

    $(window).unload(function() { $('#myDiv').trigger('myUnloadFunction'); });