JQuery Mobile在jQuery(document).on('pageinit'中指定页面ID

时间:2012-09-06 21:15:49

标签: jquery mobile

在我的多页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的缺点或问题?

1 个答案:

答案 0 :(得分:0)

这是因为jQuery Mobile一次在DOM中保留多个页面。你必须考虑到这一点。如果具有id button的元素存在于两个不同的页面上,则其中一个元素将多次绑定到该事件(因为id必须是唯一的)

委托pageinit方法是推荐的方法。