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 モバイルはそのイベントをインターセプトし、代わりに ajax リクエストを作成して DOM に挿入します。これを回避する 1 つの方法はlive、クリック イベントに を使用することです。すなわち

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

これにより、ブラウザーは、DOM にいつ挿入されたかに関係なく、「#add-product-spec」セレクターに一致するすべての「クリック」イベントを監視するように指示されます。

編集

あなたが試すことができる別のことは、PageShowの代わりに使用することですPageCreate。JQuery モバイルのPageCreateイベントは、私の記憶が正しければ、最初にページをロードしたときにのみ発生します。

于 2012-09-17T19:29:15.950 に答える