jQuery删除div除了一个

时间:2012-02-09 17:15:29

标签: jquery append

我已使用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 个答案:

答案 0 :(得分:2)

是的,不确定你要去做什么,但是如果你想要选择所有一组元素,除了这些元素的子集,你可以使用.not()函数,并使用任何选择器。 ..

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

或......

$('.line').not('#this_id').remove();

答案 1 :(得分:1)

这个怎么样:

$('a.reset').click(function() {
    $('.line').slice(1).remove(); // select all lines but first one for removal... then remove them
});

答案 2 :(得分:1)

您不需要while循环并使用:gt(0)伪选择器来选择索引大于0的元素。

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

参考: :gt()

相关问题