用jquery来进行数据的增加删除

 

  大家都知道用angular或者vue来进行数据的循环并操作数据很简单,最近试了试用jquery来进行数据的操纵,了解一下底层的原理。

  工作中用到后台提供的接口并处理得到的json数据,然后展现到页面上,这时候用户可以通过一些交互来操作自己的一些数据。而我们就需要写出一系列处理这些数据的代码。

  归根结底,就是通过方法来操作array数组来进行数据的增改。也就是说用户通过某一个操作 我们通过一些列事件最后来对数组就行操作。以下是纯jquery来进行数据的增加与删除。

  没有规定太多样式,只写了一些功能。

  上代码;html部分:

  

  <div class="box">
    <ul>

    </ul>
  <button class='btnadd'>添加</button>
  </div>
  <div class="addarr">
  <div class="addtitle">
  添加名字
  </div>
  <lable>
  姓名:<input type="text" id='name'/>
  </lable>
  <lable>
  年龄:<input type="number" id='age'/>
  </lable>
  <button class='btnsure'>
  确定
  </button>
  <button class='btncal'>
  取消
  </button>
  </div>
  </div>

js部分

var arr1=[
{name:'张三','age':'18'},
{name:'李四','age':'16'},
{name:'王五','age':'19'},
]
//这个数组该是后台传给我的
function getarry(){
$('.box ul li').remove();
for(var i=0;i<arr1.length;i++){
$('.box ul').append("<li>"+'姓名:'+arr1[i].name+'年龄:'+arr1[i].age+'<span class="del">删除</span>'+"</li>");
} ;
}
getarry(); //先把数据给输出到页面上
$(".btnadd").click(function(){
$(".addarr").show();

});
//点击出现添加框
$(".btnsure").click(function(){
var name=$('#name').val();
var age=$("#age").val();
var obj1={"name":name,'age':age};
arr1.push(obj1);
getarry();
$('#name').val("");
$("#age").val("");
$(".addarr").hide();
})
//点击确定将名字添加到数组中并展现到页面上
$(".btncal").on('click',function(){
$('.addarr').hide();
})
//取消添加

$('body').delegate('.del','click',function(){
console.log("gjlkjg");
var index=$(this).parent('li').index();
arr1.splice(index,1);
getarry();
})

其总思路是:先拿到服务器给到我们的json数据,我这里给定了一个假数组,然后用jquery进行一个循环输出到页面上。之后点击添加的时候,会出现添加框,然后输入名字,之后再push到数组里,将输出的数据清空再循环输出一遍。删除的时候就选择到当前元素的下标,对应到数组的长度,用splic的方法进行删除操作并重现执行我写好的输出函数。

其中遇到一个问题就是对于用js添加出的标签,我无法让他绑定事件。通过$('body').delegate('.del','click',function(){})这个方法绑定到事件并解决了这个问题。

这个函数的理解就是通过冒泡机制来解决这个问题,就是说通过js动态创建出的标签,我们无法直接选择到,因为我们只能选择到页面上加载完成的标签,动态添加的选择不到,我们通过冒泡,子元素的事件会一直冒泡到父元素上,可以通过父元素来监听子元素的事件。通过这个函数就解决了给动态产生的元素绑定事件。

  

 

posted @ 2017-07-19 18:15  以梦为马~不负韶华  阅读(2039)  评论(0编辑  收藏  举报