2015-05-29 64 views
0

我在頁面中動態加載三個文本框,點擊時需要帶有文本框的ID。如何獲取動態加載的文本框的ID -jquery

$.ajax({ 
    url: "../taxClass/getTaxClass", 
    type: "post", 
    contentType: "application/json", 
    dataType: "json", 
    success: function (data) { 
     var taxClassBOs = data.taxClassBOs; 
     $.each(taxClassBOs, function (key, value) { 
      $("#taxVatId").append('<div><label class="col-sm-3 control-label" for="VatId">' + value.description + '</label></div><div class="col-sm-3"><input type="text" name="vatId" value=""placeholder="' + value.title + '" id="' + value.taxClassId + '" class="form-control" /></div>'); 
     }); 
    } 
}); 

我已經試過這個代碼

$('input[type="text"]').click(function() { 
    var id = $(this).attr('id'); 
    alert(id); 
}); 
+0

的[事件綁定上動態創建的元素?]可能重複(http://stackoverflow.com/questions/203198/event-binding-on-dynamically-created-elements) – Balachandran

回答

2

您需要event delegation與動態添加元素綁定事件。您可以使用on()

$('staticParent').on('click','input[type="text"]'function(){ 

Delegated events

委託事件有優勢,他們可以處理來自被添加到該文件在稍後的時間 後代元素的事件。通過 挑選一個在連接了委託事件處理程序時保證存在的元素,可以將委派事件用於 ,從而避免需要經常附加和刪除事件處理程序。

1

幾乎是正確的,但因爲你是動態加載它們,你需要委派

$(document).on('click', 'input[type="text"]',function(){ 
         var id = $(this).attr('id'); 
         alert(id); 
        }); 

你需要委派的原因是因爲如果附加像

$('input[type="text"]').click(function(){...}); 

處理程序它將僅附加到目前的元素。

然而,隨着代表團,它將處理程序適用於所有當前未來元素。

0

在動態添加的元素上使用事件委託。

$('#taxVatId').on('click', "input[type="text"]", function(){ 
         var id = $(this).attr('id'); 
         alert(id); 
        }); 
+1

應該進來單引號像這樣'input [type =「text」]' –

+0

@KarthikeyanRaju。在'雙引號'上也可以解決這個問題,問題是什麼? – Zee

相關問題