在我的页面加载中,我收到了来自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();
}
} )发布于 2012-10-25 16:31:13
如果您的警报触发两次,则该事件将触发两次。
如何将event添加到函数参数中,并像这样对其进行安慰:
$(document).bind('pageinit', function (event) {
console.log( event )
...这应该会为您提供一些关于正在发生的事情的信息。
在SO (像here )上的pageinit上有很多问题,所以也许他们也可以给你一个解决方案。
我还遇到了触发多个pageinit事件的问题。我通常这样做是为了在第一个触发器之后lock-up一个页面:
$(document).bind('pageinit', function() {
if ( !$('html').hasClass("mv-on") ){
$('html').addClass("mv-on");
// trigger my stuff
}
});这样,pageinit将为整个DOM运行ONCE。您还可以使用它来锁定页面,方法是向触发pageinit事件的页面添加一个类或属性。
此外,还要确保pageinit是适合您的绑定/处理程序的正确事件。当我试图绑定的类还没有插入到DOM中时,我经常尝试在pageinit上进行设置,比如通过类绑定到元素。我现在通常使用pagebeforeshow,因为这样我就可以确定所有的后台工作都完成了。但这只是个尊重的问题。
发布于 2012-10-25 16:02:30
您是否有多页模板?可能是因为您有两个使用相同id的pages。JQM加载第一个出现的页面,因此会加载两次。
也可能与this JQM git issue request中指出的问题有关。
还可以看看this chart,它很好地理解了JQM触发的事件的顺序。
发布于 2012-10-25 16:13:41
你不应该使用pageinit事件绑定到document,你可以尝试只显示一个页面吗
例如,$("#yourpageId").bind('pageinit', function () {...}
https://stackoverflow.com/questions/13063688
复制相似问题