2012-02-29 126 views
1

Append()正常工作,但它只能在第一个<a class="add">Add</a>上工作。不能添加新的输入字段与最新<a class="add">Add</a>Jquery append()不适用于新的<a>添加</a>

这里是我的代码

$(document).ready(function(){ 
    var scntDiv = $('#add_words'); 
    $('.add').click(function() { 
     $("#add_words").append('<div class="line">Word is <input type="text" /><a class="add">Add</a></div>'); 
     return false; 
    }); 
}); 

HTML代码

<div id="add_words"> 
    <div class="line">Word is 1<input class="input1" type="text" value="1" /><a class="add">Add</a></div> 
</div> 

回答

0

使用像这样生活:see this jsfiddle

$('.add').live("click", function(event) {  
    $("#add_words").append('<div class="line">Word is <input type="text" /><a class="add">Add</a></div>'); 
    return false; 

});

+1

['live'](http://api.jquery.com/live/)已弃用。您应该使用['on'](http://api.jquery.com/on/),正如我的回答和其他人所述。 – 2012-02-29 14:37:45

3

这是因为click只重视了click事件处理程序,以现有的DOM元素,而不是未来的。你需要的jQuery on

$(document).ready(function() { 
    $("#add_words").on("click", ".add", function(e) { 
    // Do your append here 
    // e.delegateTarget is your <div id="add_words"> 
    $(e.delegateTarget).append('<div class="line">Word is <input type="text" /><a class="add">Add</a></div>'); 
    // Prevent default action (e.g. don't follow links) 
    e.preventDefault(); 
    }); 
}); 
3

使用on()事件代表团,而不是click()

$('#add_words').on('click', '.add', function(){ 
    $("#add_words").append('<div class="line">Word is <input type="text" /><a class="add">Add</a></div>'); 
}); 
相关问题