我只能将pagebeforechange绑定到整个jquery移动文档,而不是单个页面。谁能解释为什么this不起作用?
答案 0 :(得分:2)
$("div[data-role='page']").live( "pagebeforehide", function( event ) {
alert('This alert should trigger before Next Page Here is shown?');
});
(查看link了解详情) 你也可以使用bind代替live,希望它有所帮助。
答案 1 :(得分:1)
使用jQuery Mobile - 我很确定你不会绑定到文档,而是绑定到pageinit属性。
绑定到doc会产生问题...请记住,此链接再次在#home上工作,您将需要beforepageshow的另一个事件监听器或者再次显示该页面之前的内容。
This doc非常有用......
答案 2 :(得分:1)
JQM页面的选择器:
$('.ui-page')
将事件监听器添加到文档中的所有页面可以完成:
$(document).delegate(".ui-page","pagebeforehide", function(evt, ui){
alert('pagebeforehide fired');
}
使用 delegate :
小提琴注意使用 bind 而不是委托将不适用于上述选择器,因为仅在创建页面时添加ui-page类。
为了使用 bind ,请使用以下选择器:
$("div[data-role='page']")
使用(仅在文档准备好或正文已加载后)添加事件侦听器:
$("div[data-role='page']").bind("pagebeforehide", function(evt, ui{
alert('pagebeforehide fired');
}
使用 bind :
小提琴我还建议使用mobileinit事件而不是文档就绪!
答案 3 :(得分:-1)
我遇到了完全相同的问题,但我至少为你解决了问题。警告:这是一个愚蠢,可怕的代码。 但它完成了这项工作。
window.doubleLoadPreventer = 0;
$(document).bind('pagebeforechange', function(e, data){
if ( window.doubleLoadPreventer === 1 ) {
window.doubleLoadPreventer = 0;
return;
} else {
window.doubleLoadPreventer = 1;
}
//your normal event handler code here
}