0

正如标题所说:

我有一个带有几个按钮和 jquery 脚本的页面,如下所示:

    $( document ).bind( 'mobileinit', function(){
  $.mobile.loader.prototype.options.text = "loading";
  $.mobile.loader.prototype.options.textVisible = false;
  $.mobile.loader.prototype.options.theme = "a";
  $.mobile.loader.prototype.options.html = "";
});

$(document).bind('pagecreate', function(event){
// New model form submittion

     $('#new-model-submit').click(function(){
          // do
     });

     // Compatibility

     // Switch brands
     $('#brands').change(function(){
         // do something
     });

     // Add model to compatibility
     $('input[type=checkbox]').live("change", function(){
         // do something

     });

     // Specificaties
     $("#add-product-spec").click(function(){
         // do something
     });

     $("#save-product-specs").click(function(){
         // Do something
     });

     // Foto's
     $("#add-product-foto").click(function(){
        // Do something
     });

     $("#save-product-fotos").click(function(){
        // Do something
     });

});

问题是这些事件在页面首次加载时不会被触发。但是,当我按下F5并刷新页面时,按钮确实起作用。为什么是这样?有没有人有办法解决吗?

4

1 回答 1

3

JQuery Mobile 的工作方式略有不同。如果链接将您定向到同一域上的页面,则 JQuery mobile 将拦截该事件,并改为发出 ajax 请求,然后将其插入 DOM。解决此问题的一种方法是live用于您的点击事件。IE

// Specificaties
$("#add-product-spec").live("click", function(){
 // do something 
});

这将告诉浏览器留意任何匹配“#add-product-spec”选择器的“click”事件,无论它何时插入 DOM。

编辑

您可以尝试的另一件事是使用PageShow而不是PageCreate. PageCreate如果我没记错的话,JQuery mobile 的事件只会在您第一次加载页面时触发。

于 2012-09-17T19:29:15.950 回答