在我的多页JQM应用程序中,我遇到了多次触发事件的问题。例如:
$("#Button").on("click", function (event) {
alert("hello");
});
这将在第一次触发时,但在导航到其他页面或使用后退按钮后,警报弹出窗口的数量随着对链接的访问次数的增加而增加。 我能够通过使用
来阻止这种情况event.stopImmediatePropagation();
但这在我的应用中引起了另一个问题。 WTF?这非常令人沮丧。为什么在JQM网站上没有更好的文档记录? ..无论如何。在寻找解决方案时,我在
找到了这篇文章http://www.ardeearam.com/blog/2012/06/03/jquery-mobile-events-firing-multiple-times/
它建议将'pageinit'事件委托给找到该元素的页面ID。即。
jQuery(document).on('pageinit', '#page_one', function (event) {
)};
我有一种预感,不是为该页面的每个代码块设置多个pageinit块(如文章所述),只需将pageinit页面id设置为html中的第一页。我试过了,多事件问题消失了。我测试了我的应用程序以确保其他页面上没有其他内容(我总共有6页)被破坏并且工作正常。我的问题是:任何人都可以看到使用此方法进行pageinit的缺点或问题?
答案 0 :(得分:0)
这是因为jQuery Mobile一次在DOM中保留多个页面。你必须考虑到这一点。如果具有id button
的元素存在于两个不同的页面上,则其中一个元素将多次绑定到该事件(因为id必须是唯一的)
委托pageinit
方法是推荐的方法。