JQuery удалить div, кроме одного - PullRequest
0 голосов
/ 09 февраля 2012

Я создал текстовое поле с appendTo().

.remove() функции также работают нормально.

Вот мой код:

<div id="add_words">
    <a id="add">Add</a>
    <a href="#" class="reset">Reset</a>

    <div class="line">Word <input class="input1" type="text" /></div>
</div>
$(document).ready(function() {
    var scntDiv = $('#add_words');
    var wordscount = 1;
    var i = $('.line').size() + 1;
    // Add new input field while keyup
    $("#add_words").on("keyup", "input[type='text']", function(e) {
        if ($(this).attr("data-isused") != "true") {
            $(this).attr("data-isused", "true");
            wordscount++;
            $('<div id="em_in" class="line" style="display:none">Word ' + wordscount + '<input type="text" class="input' + wordscount + '" value="' + wordscount + '" /><a class="remScnt">Remove</a></div>').appendTo(scntDiv).slideDown(1000);
            i++
            return false;
        }
    });
    // Remove button
    $('#add_words').on('click', '.remScnt', function() {
        if (i > 1) {
            $(this).parent().remove();
            i--;
        }
        return false;
    });
});

Они работают нормально.

Я хотел бы добавитьфункция сброса для <a href="#" class="reset">Reset</a> ссылки, которую я пробовал с родителем, и некоторые другие способы, подобные этому:

$('a.reset').click(function() {
    while (i > 2) { 
        $('.line').remove(); 
        i--;
    }
});

К сожалению, я пока не нашел решения.

Ответы [ 3 ]

2 голосов
/ 09 февраля 2012

Да, не уверен, что вы собираетесь, но если вы хотите выбрать весь набор элементов, кроме подмножества этих элементов, вы можете использовать функцию .not () и использовать любой селектор...

$('.line').not(':first').remove();

или ...

$('.line').not('#this_id').remove();
1 голос
/ 09 февраля 2012

Вам не нужен цикл while и используйте псевдоселектор :gt(0) для выбора элементов с индексом больше 0.

$('a.reset').click(function() {
   $('.line:gt(0)').remove(); 
});

Ссылка: : GT ()

1 голос
/ 09 февраля 2012

Как насчет этого:

$('a.reset').click(function() {
    $('.line').slice(1).remove(); // select all lines but first one for removal... then remove them
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...