如何使用jquery从数组中删除选定的值

时间:2013-03-04 14:04:47

标签: javascript jquery jquery-ui

我想从数组中删除特定值。我编写的代码如下:

   $(".remove", document.getElementById("TXT")).live("click", function () {      
          $(this).parent().remove();
          var removeitem = $(this).parent().attr('id');                         
          pushvar.splice($.inArray(removeitem, pushvar), 1);

      });

在上面的代码pushvar中是一个数组。假设它包含3个元素。当我们点击其中一个删除按钮时,该函数将重复三次。例如,pushvar包含[5,6,7]个元素。如果我点击6的删除按钮,那么该功能将重复三次。但是

 pushvar.splice($.inArray(removeitem, pushvar), 1);

将删除所有三个元素。但是当我点击删除类时,我只想从数组中删除6。我怎么能这样做。

5 个答案:

答案 0 :(得分:1)

您可以这样做:

var myArray = [10, 20, 30, 40, 50];
var removeThis = 30;

myArray = jQuery.grep(myArray, function(data){
return data != removeThis;
});

答案 1 :(得分:1)

live()已弃用

  

jQueryversion弃用:1.7,删除:1.9

所以请使用on

 $(".remove,#TXT").on("click", function () {      
      var removeitem = $(this).parent().attr('id');  //get parent id                        
      $(this).parent().remove(); //remove later
      pushvar.splice($.inArray(removeitem, pushvar), 1);

  });

如果您的选择器是动态添加的,请使用on委托

  $(document).on("click", ".remove,#TXT",  function () {  

答案 2 :(得分:1)

我会做这样的事情:

$("#TXT").on("click", ".remove", function () {      
    var removeitem = $(this).parent().remove().attr('id');     
    pushvar.splice($.inArray(removeitem, pushvar)-1, 1);
});

因为这似乎对我有用 - > FIDDLE,但没有任何HTML,有很多猜测?

答案 3 :(得分:1)

试试这个:

$(".remove", document.getElementById("TXT")).live("click", function () {
    $(this).parent().remove();
    var removeitem = $(this).parent().attr('id');

    if ($.inArray(removeitem, pushvar) > 0) pushvar.splice($.inArray(removeitem, pushvar), 1);
});

答案 4 :(得分:1)

试试这个

pushvar = [5,6,7];

$('.remove').on("click", function () {    
      var removeitem = $(this).attr('id');  
      pushvar.splice($.inArray(parseInt(removeitem), pushvar), 1);
      document.write(pushvar);
      return false;
  });

See Demo