Jquery append () не работает на новых <a>Add </a> - PullRequest
1 голос
/ 29 февраля 2012

Append () работает нормально, но работает только на первом <a class="add">Add</a>. не удалось добавить новое поле ввода с последней <a class="add">Add</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>

Ответы [ 3 ]

3 голосов
/ 29 февраля 2012

Используйте 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>');
});
3 голосов
/ 29 февраля 2012

Это потому, что click только прикрепляет обработчик событий click к существующим элементам DOM, но не к будущим.Вам нужен jQuery на :

$(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();
  });
});
0 голосов
/ 29 февраля 2012

используйте Live, как это: смотрите это 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;

});

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...