jQuery代码仅适用于jQuery Mobile中的首页加载

时间:2012-11-27 12:40:43

标签: jquery-mobile

我在jQuery Mobile中有以下代码。页面首次加载时此代码可以正常工作,但是如果您导航到此页面则不执行任何操作。

$('#dontKnowReg').click(function(){
    if($(this).is(':checked')) { 
            $('#dontKnowRegDetails').slideDown();
    } else {
           $('#dontKnowRegDetails').slideUp();
    }
});

我通过将.click更改为.live修复了类似的问题,但在这种情况下,这意味着代码根本不起作用(即使我刷新页面)。谢谢

$('#dontKnowReg').live('click', function () {
    if($(this).is(':checked')) { 
            $('#dontKnowRegDetails').slideDown();
    } else {
           $('#dontKnowRegDetails').slideUp();
    }
});

2 个答案:

答案 0 :(得分:0)

这应该有效:

$('#page').live('pagebeforeshow',function(e,data){
    $('#dontKnowReg').unbind();
    $('#dontKnowReg').bind('click', function(e) {
       if($(this).is(':checked')) { 
         $('#dontKnowRegDetails').slideDown();
       } else {
         $('#dontKnowRegDetails').slideUp();
       }
    });
});

让我们说#page是一个可以找到复选框的页面(如果你有更多带有该复选框的页面使用它:$('#page,#page2,#page3')。live('pagebeforeshow'... ...)。每次页面#page即将显示时,我们将在复选框上绑定一个事件(如果事件已被绑定,unbind就在这里取消绑定,这也可以通过事件过滤器阻止,但我没有一个例子希望这有帮助。

Here's关于事件过滤器和here's的一些示例为什么在jQm环境中有必要。

您的第二个示例应该在jQM环境中更好地工作,您唯一的问题是何时应用它。如果您使用的是较新版本,请考虑使用.on(而不是.live(,。bind(,。delegate(

答案 1 :(得分:0)

似乎你不能使用dom准备好jQuery。现在它起作用了:

//$(document).ready(function() {
$("#mypage").live('pageinit', function() {

http://forum.jquery.com/topic/how-to-use-pageinit