2

在我的页面加载中,我收到了来自 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();
    }

} )
4

3 回答 3

1

如果您的警报触发两次,则该事件将被触发两次。

如何添加event到函数参数并像这样安慰它:

$(document).bind('pageinit', function (event) {

   console.log( event )

   ...

这应该会给你一些关于正在发生的事情的信息。

pageinit关于 SO有很多问题(比如这里),所以也许他们也可以为您指出解决方案。

我也遇到了多个pageinit事件触发的问题。我通常在lock-up第一次触发后对页面执行此操作:

$(document).bind('pageinit', function() {
    if ( !$('html').hasClass("mv-on") ){
        $('html').addClass("mv-on");
        // trigger my stuff
        }
    });

这样 pageinit 将为ONCE整个 DOM 运行。pageinit您还可以通过向触发事件的页面添加类或属性来使用它来锁定页面。

此外,请确保pageinit您的绑定/处理程序是正确的事件。pageinit当我尝试绑定的类尚未插入 DOM 时,我经常尝试设置一些东西,例如按类绑定到元素。我通常pagebeforeshow现在就去,因为那时我确定所有背景事情都完成了。但只是个人喜好问题。

于 2012-10-25T08:31:13.100 回答
0

你有多页模板吗?可能是您有两个pages使用相同的 ID。JQM 加载第一个出现的页面,因此会加载两次。

也可能与此 JQM git issue request中指出的问题有关。

也看看这个图表,真的很好理解 JQM 触发的事件的顺序。

于 2012-10-25T08:02:30.493 回答
-1

你不应该绑定到documentpageinit 事件,你可以尝试只显示一个页面吗

例如, $("#yourpageId").bind('pageinit', function () {...}

于 2012-10-25T08:13:40.967 回答