如何获取动态加载的文本框的id -jquery

时间:2015-05-29 12:51:43

标签: javascript jquery

我在页面中动态加载三个文本框,单击时需要输入文本框的id。

$.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);
});

3 个答案:

答案 0 :(得分:2)

您需要event delegation将事件与动态添加的元素绑定。您可以使用on()

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

Delegated events

  

委派事件的优势在于它们可以处理来自的事件   稍后添加到文档中的后代元素。通过   选择一个保证在当时存在的元素   委托事件处理程序附加,您可以使用委托事件   避免频繁附加和删除事件处理程序。

答案 1 :(得分:1)

几乎正确,但由于您是动态加载它们,因此需要委派

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

您需要委派的原因是因为您附加了像

这样的处理程序
$('input[type="text"]').click(function(){...});

它只会附加当前元素。

但是,通过委派,它会将处理程序应用于所有当前将来元素。

答案 2 :(得分:0)

对动态添加的元素使用事件委托。

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