首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jquerymobile在pageinit上发出两次警报

Jquerymobile在pageinit上发出两次警报
EN

Stack Overflow用户
提问于 2012-10-25 15:31:36
回答 3查看 660关注 0票数 2

在我的页面加载中,我收到了来自jqm的2个警告。我的代码有什么问题吗?

我的代码:

代码语言:javascript
复制
 $(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();
    }

} )
EN

回答 3

Stack Overflow用户

发布于 2012-10-25 16:31:13

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

如何将event添加到函数参数中,并像这样对其进行安慰:

代码语言:javascript
复制
$(document).bind('pageinit', function (event) {

   console.log( event )

   ...

这应该会为您提供一些关于正在发生的事情的信息。

在SO (像here )上的pageinit上有很多问题,所以也许他们也可以给你一个解决方案。

我还遇到了触发多个pageinit事件的问题。我通常这样做是为了在第一个触发器之后lock-up一个页面:

代码语言:javascript
复制
$(document).bind('pageinit', function() {
    if ( !$('html').hasClass("mv-on") ){
        $('html').addClass("mv-on");
        // trigger my stuff
        }
    });

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

此外,还要确保pageinit是适合您的绑定/处理程序的正确事件。当我试图绑定的类还没有插入到DOM中时,我经常尝试在pageinit上进行设置,比如通过类绑定到元素。我现在通常使用pagebeforeshow,因为这样我就可以确定所有的后台工作都完成了。但这只是个尊重的问题。

票数 1
EN

Stack Overflow用户

发布于 2012-10-25 16:02:30

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

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

还可以看看this chart,它很好地理解了JQM触发的事件的顺序。

票数 0
EN

Stack Overflow用户

发布于 2012-10-25 16:13:41

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

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

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13063688

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档