0

我在 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();
    }
});
4

2 回答 2

0

看来您不能在 jQuery 中使用 dom 就绪。现在它起作用了:

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

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

于 2012-11-27T15:43:18.607 回答
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 即将显示时,我们将在复选框上绑定一个事件(取消绑定是为了在事件已绑定的情况下取消绑定,这也可以通过事件过滤器来防止,但我这里没有示例)。希望这可以帮助。

是有关事件过滤器的一些内容,这是一个示例,为什么在 jQm 环境中需要它。

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

于 2012-11-27T13:00:34.760 回答