2012-02-29 130 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>'); 
}); 
相關問題