0

私はjQuery Mobileに取り組んでいます。

動的にロードされているコラボリストを表示しているビューがあります。したがって、私のjQueryファイルはJSONデータを取得し、ループを実行します$('mylist').append(..data for each row..).

折りたたみ可能なすべてのアイテムに、パラメータとともに JavaScript 関数を実行する必要があるボタンを追加しています。これは私が立ち往生しているところです。どういうわけか、クリック時にイベントが発生しません。イベントが生成されない、または変数に渡すパラメーターが主な問題であるという事実のためですか。

$('#main')
  .bind("pageshow", function (event) { 
    var cusid = getUrlVars()["cusid"]; 
    var locid = getUrlVars()["locid"]; 
    $.getJSON("localhost/mserv/Offers.php";, function(data) { 
      $.each(data, function(index, offer){ 
        $('#cat_list').append("<div align='center' data-role='collapsible'><h3>offer.name</h3><p>offer.price</p><input type= 'button' onclick='addItem("+offer.id+",'"+offer.name+"',"+offer.price+")' value='Add To Cart'></div>"); 
      }); 
    $('#cat_list').collapsibleset('refresh'); 
  });
4

1 に答える 1

0

実際には十分な情報(特に使用するコード)を提供していませんが、何が問題なのかはわかります。

jQuery モバイルは、常に AJAX を介して要素を DOM に追加します。AJAX 経由で DOM に追加された要素にイベント リスナーを追加する場合は、たとえば、on()代わりにを使用する必要があります。click()

だから交換

$('clickableElement').click(function() {
    ...
});

$('clickableElement').on('click', function() {
    ...
});

このようにして、DOM が最初にロードされたとき (ページの最初の呼び出し) にクリック イベント リスナーが存在していなかったとしても、AJAX を介して DOM に追加されるとすぐに、要素にクリック イベント リスナーをバインドします。

于 2012-05-02T21:20:21.973 に答える