在我的页面加载中,我从jqm获得2个警报。我的代码有什么问题吗?
我的代码:
$(document).bind('pageinit', function () {
alert('hi') // alerts 2 times...
if(navigator.platform.indexOf("iPhone") != -1){
$('div.video-holder span ').hide();
}
$('a[href="#"], a.disabled').bind('click touchstart',function (e) {
e.preventDefault();
} );
if($(' #task-1,#task-2').length){
candidateAccordion($('.candidate-list'));
}
if($('#task-3').length || $('#task-4').length){
taskSelector($('#task-3,#task-4'));//only for tast list selection
}
if($('video').length){
$('.video-holder').each(function(num,element) {
videoProcess($(element));
});
}
if($('#task1-candSelected').length){
candidateUpdate($('#task1-candSelected'));
}
if($('#task2-results').length){
task2ResultProcess();
}
if($('#task3-results').length){
task3ResultProcess();
}
if($('#task4-results').length){
task4ResultProcess();
}
if($('#scoredUptoFinal').length){
scoredUptoFinal();
}
} )
答案 0 :(得分:1)
如果您的警报触发两次,则该事件将被触发两次。
如何将event
添加到函数参数并对其进行安慰:
$(document).bind('pageinit', function (event) {
console.log( event )
...
这可以为您提供有关正在发生的事情的一些信息。
pageinit
上有很多关于SO的问题(比如here),所以也许他们也可以指出你的解决方案。
我也遇到了多个pageinit
事件触发的问题。在第一次触发后,我通常会在lock-up
页面执行此操作:
$(document).bind('pageinit', function() {
if ( !$('html').hasClass("mv-on") ){
$('html').addClass("mv-on");
// trigger my stuff
}
});
这样,pageinit将为整个DOM运行ONCE
。您还可以通过在pageinit
事件被触发的情况下向页面添加类或属性来使用它来锁定页面。
此外,请确保pageinit
是绑定/处理程序的正确事件。我经常尝试在pageinit
上设置内容,比如按类绑定到一个元素,当我尝试绑定的类尚未插入到DOM中时。我现在经常和pagebeforeshow
一起去,因为那时我确信所有背景都已完成。但这仅仅是一种推理。
答案 1 :(得分:0)
你有多页模板吗?可能是你有两个pages
使用相同的ID。 JQM加载第一个出现的页面,因此会加载它两次。
也可能与this JQM git issue request中指出的问题有关。
另请查看this chart,非常了解JQM触发的事件顺序。
答案 2 :(得分:-1)
您不应该使用pageinit事件绑定到document
,您是否可以尝试只显示一个页面
例如,
$("#yourpageId").bind('pageinit', function () {...}