元素显示然后隐藏Jquery Mobile

时间:2012-03-05 08:39:43

标签: jquery events jquery-mobile

如果订单号不等于-1

,我正在使用以下事件并尝试隐藏按钮
 $('#ordPage1').live('pageshow',function(event){
            //$('#btnRegisterVisit').hide();    
            //alert(sessionStorage.OrderNo);
            if(sessionStorage.OrderNo!= -1){
                $('#btnRegisterVisit').hide();
                //alert("test");
            }
            else{
                $('#btnRegisterVisit').show();
            }
    });

但我的问题是当页面加载时,按钮显示然后立即消失。有没有办法不显示按钮。按钮显示在UI上然后消失可能会导致问题,因为用户可能会单击它。

有人能帮助我吗?提前致谢。

5 个答案:

答案 0 :(得分:1)

你能把#btnRegisterVisit { display: none; }放在CSS文件中吗?

答案 1 :(得分:1)

尝试使用pageinit

$(document).bind('pageinit', function(){
    if(sessionStorage.OrderNo!= -1){
           $('#btnRegisterVisit').hide();
            //alert("test");
     }
     else{
           $('#btnRegisterVisit').show();
     }
 });

来自http://jquerymobile.com/test/docs/api/events.html

  

重要提示:使用$(document).bind('pageinit'),而不是$(document).ready()

     

你在jQuery中学到的第一件事就是在$(document).ready()函数中调用代码,这样一旦加载了DOM,一切都会执行。但是,在jQuery Mobile中,Ajax用于在导航时将每个页面的内容加载到DOM中,而DOM ready处理程序仅针对第一个页面执行。要在加载和创建新页面时执行代码,您可以绑定到pageinit事件。此事件在本页底部详细说明。

如果您已尝试pageinit但它无效。您也可以尝试使用pagebeforeshow

$('#ordPage1').live('pagebeforeshow',function(event){
        //$('#btnRegisterVisit').hide();    
        //alert(sessionStorage.OrderNo);
        if(sessionStorage.OrderNo != -1){
            $('#btnRegisterVisit').hide();
            //alert("test");
        }
        else{
            $('#btnRegisterVisit').show();
        }
});
  

pagebeforeshow -   在实际过渡动画开始之前,我们正在转换到“toPage”上的触发器。此事件的回调将接收数据对象作为其第二个arg。

答案 2 :(得分:0)

<html>
<head>
  <style>
  span { background:#def3ca; padding:3px; float:left; }
  </style>
  <script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
    <button id="hidr">Hide</button>
  <button id="showr">Show</button>
  <div>

    <span>Once</span> <span>upon</span> <span>a</span> 
    <span>time</span> <span>there</span> <span>were</span> 
    <span>three</span> <span>programmers...</span>

  </div>
<script>
    $("#hidr").click(function () {
      $("span:last-child").hide("fast", function () {
        // use callee so don't have to name the function
        $(this).prev().hide("fast", arguments.callee); 
      });
    });
    $("#showr").click(function () {
      $("span").show(2000);
    });

</script>
</body>
</html>

答案 3 :(得分:0)

看看这个:

  

重要提示:使用$(document).bind('pageinit'),而不是$(document).ready()

在jQuery Mobile doc上找到

答案 4 :(得分:0)

将它绑定到pagebeforeshow事件。

 $('#ordPage1').live('pagebeforeshow',function(event){
        //$('#btnRegisterVisit').hide();    
        //alert(sessionStorage.OrderNo);
        if(sessionStorage.OrderNo!= -1){
            $('#btnRegisterVisit').hide();
            //alert("test");
        }
        else{
            $('#btnRegisterVisit').show();
        }
});