0

在我的多页 JQM 应用程序中,我遇到了多次触发事件的问题。例如:

    $("#Button").on("click", function (event) {

            alert("hello");

    });

这会在第一次触发一次,但在导航到其他页面或使用后退按钮后,警报弹出窗口的数量会随着链接访问次数的增加而增加。我能够通过使用来阻止这种情况

event.stopImmediatePropagation();

但这在我的应用程序中引起了另一个问题。怎么回事?这非常令人沮丧。为什么这在 JQM 网站上没有得到更好的记录?..无论如何。在寻找解决方案时,我在

http://www.ardeearam.com/blog/2012/06/03/jquery-mobile-events-firing-multiple-times/

它建议将 'pageinit' 事件委托给找到元素的页面 id。IE

jQuery(document).on('pageinit', '#page_one', function (event) { 

)};

我有一种预感,而不是为该页面的每个代码块(如文章所述)设置多个 pageinit 块,而是将 pageinit 页面 ID 设置为 html 中的第一页。我试过了,多事件问题消失了。我测试了我的应用程序以确保其他页面(我总共有六个页面)上的其他内容没有损坏并且运行良好。我的问题是:任何人都可以看到将这种方法用于 pageinit 的缺点或问题吗?

4

1 回答 1

0

发生这种情况是因为 jQuery Mobile 一次在 DOM 中保留了多个页面。您必须牢记这一点进行编码。如果具有 id 的元素button存在于两个不同的页面上,则其中一个元素将多次绑定事件(因为 id 必须是唯一的)

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

于 2012-09-06T21:18:07.727 回答