2012-08-15 58 views
0

我從服務器獲取json數組,然後通過它循環並將按鈕(data-role =「button」)添加到頁面。我在每次迭代中調用$(「a [data-role ='button']」)。button()。JQuery Mobile - 將事件處理程序分配給動態創建的按鈕

我的問題是,每個按鈕需要調用相同的事件處理程序,但使用不同的ID。 如果我在Java/GWT中這樣做,我會將id傳遞給每個按鈕的事件處理程序的自定義實現的構造函數。

如何在JQuery Mobile中實現相同?

下面的代碼創建了兩個按鈕,但是當我點擊它們時沒有任何反應。

這裏是我的代碼:

success: function(data) { 
       $('#personPage div[data-role="content"]').empty(); 
       for (var i = 0;i < data.length;i++){ 
        $('#personPage div[data-role="content"]').append('<a href="#" id="person_' + data[i].id + '" data-role="button" data-id="person_' + data[i].id + '">' + data[i].name + '</a>'); 
        $("a[data-role='button']").button(); 
        $("#person_" + data[i].id).bind('click', function(event) { 
          alert('It WOrks'); 
         }); 
        }); 
       } 
      } 

+0

我知道這是一個老問題,但你的代碼適用於我http://jsfiddle.net/ZngWR/ – 2013-05-17 11:19:55

回答

1

當您添加按鈕(建設要追加的HTML),還添加了數據-id屬性與價值從JSON陣列的ID。所以html標記最終會是這樣的:

<a data-role="button" data-id="1234">1234 Button</a> 

而在onclick事件處理程序得到這樣的ID:

var id = $(this).data('id'); 

就是這樣。

請參閱http://api.jquery.com/data/以瞭解有關數據屬性的更多信息。

+0

謝謝你的回覆。但是,我如何指定點擊處理程序本身?我嘗試了許多不同的方式,並且沒有捕獲點擊事件。我已將我的代碼添加到問題中。 – 2012-08-15 11:23:11

+1

$(document).delegate('a','click',function(event){ var id = $(this).data('id'); }); – 2012-08-19 19:47:49

+0

@AkashBudhia你剛剛救了我很多挫折。非常感謝。 – LISTERINE 2013-12-23 13:46:55

相關問題