jquery - 使用按钮 jquery 添加和删除 div

标签 jquery html

我需要一些关于这个 fiddle 的帮助http://jsfiddle.net/zWkxt/6/ 所以基本上我想要使用按钮添加和删除 div 的功能。 始终删除数字最大的可见 div 并添加下一个 div...

<button class="add">add</button>
<button class="remove">remove</button>
<div class="targetdiv">
    <div class="special">div 1</div>
    <div class="special">div 2</div>
    <div class="special">div 3</div>
    <div class="special">div 4</div>
    <div class="special">div 5</div>
    <div class="special">div 6</div>
</div>

jQuery(function () {
    var save = $('.special').detach();
    $('.add').click(function() {
            save.eq(0).appendTo(".targetdiv");
            save = save.filter(function(i) { return i; });
    });


    $('.remove').click(function() {
           $('.special').last().detach();
    });
});

最佳答案

一旦你追加一个对象,它就会从你的变量中删除,这就是为什么你可以只执行 save.eq(0) ....否则,你必须遍历它。

有几种方法可以解决这个问题,您可以克隆它并插入克隆,然后移动下一个索引。

或者,您可以将其添加回保存数组。 像这样:

jQuery(function () {
    var save = $('.special').detach();
    $('.add').click(function() {
   
            save.eq(0).appendTo(".targetdiv");
            save = save.filter(function(i) { return i; });
   					     
    });
    
    
    
    $('.remove').click(function() {
   
         save.push($('.special').last().detach()[0]); //Add it back to the array
    });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<button class="add">add</button>
<button class="remove">remove</button>
<div class="targetdiv">
    <div class="special">div 1</div>
    <div class="special">div 2</div>
    <div class="special">div 3</div>
    <div class="special">div 4</div>
    <div class="special">div 5</div>
    <div class="special">div 6</div>
</div>

这个保持顺序:

jQuery(function () {
    var osave = $('.special').detach();
    var save=[]
    for(i=0;i<osave.length;i++){

        save[i]=osave[i]; //Fix key reference
    }
    
    $('.add').click(function() {
            //get the first index of the array
            index=Object.keys(save).sort()[0];
            console.log(save,index);   
            $(save).eq(index).appendTo(".targetdiv");
            save.splice(index,1); //truly remove from save
            //save = save.filter(function(i) { return i; });
           
   					     
    });
    
    
    
    $('.remove').click(function() {
         //How many are visible?
         vis=$('.special').length-1;
         save[vis]=($('.special').last().detach()[0]); //Add it back to the array with the right index.
        
    });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<button class="add">add</button>
<button class="remove">remove</button>
<div class="targetdiv">
    <div class="special">div 1</div>
    <div class="special">div 2</div>
    <div class="special">div 3</div>
    <div class="special">div 4</div>
    <div class="special">div 5</div>
    <div class="special">div 6</div>
</div>

这个的工作方式是将键分配给保存,确保它可以保留引用,然后当它将它们添加到文档时,它将它们从保存中删除。当您从文档中删除它们时,它会将其添加回来以使用正确的索引进行保存。

更好的版本:

jQuery(function () {
    var osave = $('.special').detach();
    var save=[]
    for(i=0;i<osave.length;i++){

        save[i]=osave[i]; //Fix key reference
    }
    
    $('.add').click(function() {
            //get the first index of the array
            //index=Object.keys(save).sort()[0];
            index=$('.special').length;
            $(save).eq(index).appendTo(".targetdiv");
            //Dont remove from save.
            //save = save.filter(function(i) { return i; });
           
   					     
    });
    
    
    
    $('.remove').click(function() {


         $('.special').last().detach()[0]; //Add it back to the array with the right index.
        
    });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<button class="add">add</button>
<button class="remove">remove</button>
<div class="targetdiv">
    <div class="special">div 1</div>
    <div class="special">div 2</div>
    <div class="special">div 3</div>
    <div class="special">div 4</div>
    <div class="special">div 5</div>
    <div class="special">div 6</div>
</div>

这个不管理保存变量,只通过查看当前 View 中的内容来管理索引,假设没有任何问题。

我推荐最后一个,但把其他的留在答案中,以防你需要他们的东西。

关于jquery - 使用按钮 jquery 添加和删除 div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36510785/

相关文章:

javascript - jquery-function 不显示任何内容

javascript - 如何使用 JQuery 打印库打印隐藏的 div

javascript - Jquery Prev() 获取数据属性的最后 3 个标签名称

jquery - 当用户滚动到 div 时如何做某事?

javascript - 如何模糊 fabric js 中的对象(不是图像)?

php - 为什么 Bootstrap Modal 上的按钮第二次不起作用?

javascript - 打印没有父 div 的特定 div

javascript - 更改时加载 Web 资源 [js、css、图像] 的最佳方式是什么

html - 设置书写模式/文本方向从下到上

javascript - 如何在 javascript/css 中制作移动背景