0

我有以下内容:

$(document).on("pageinit", function (event) {
        alert("pageinit called");               
        $('#logout').bind('click', function() {alert("clicked!");});
    });

页面第一次运行时,您会收到一个警报“pageinit called”。单击 ID 为 #logout 的元素会触发警报“单击!”。如果我单击此页面中的任何其他链接,我仍然会收到“pageinit called”警报(并且我多次收到它,显然对于我之前导航过的每个页面也是如此)但随后 #logout 的处理程序消失了,并且永远不会重新-已确立的。

谁能告诉我如何让#logout 的处理程序保留下来?我试过了:

$('#logout').die('click').live('click', function() {alert("clicked!");});

无济于事。

4

1 回答 1

0

在仔细观察之后(并且正如 Omar 所评论的那样),这个问题是由 jquery 移动分页系统和试图通过 id 附加到“单个”元素的组合引起的。

在我的情况下,每次我单击页面中的链接时,它都会将一个单独的页面加载到 jqm 分页系统中,每个页面都包含自己的#logout 元素。我的解决方案是查询所有按钮并将处理程序附加到每个按钮:

var buttons = $("*[id='logout']");

buttons.each(function() {
    // handle click or whatever here
});

代替:

var button = $('#logout'); // Only hooks into the first #logout element
于 2013-10-15T15:03:37.033 回答