仅在刷新后触发的Click事件

时间:2012-09-17 19:22:20

标签: jquery jquery-mobile

就像标题所说:

我有一个带有几个按钮和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 并刷新页面按钮确实有效。为什么是这样?有没有人有解决方案?

1 个答案:

答案 0 :(得分:3)

JQuery Mobile的工作方式略有不同。如果链接将您引导到同一域上的页面,JQuery mobile将拦截该事件,而是发出ajax请求,然后将其插入DOM。解决此问题的一种方法是使用live进行点击活动。即。

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

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

修改

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