4

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

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

      });

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

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

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

4

5 回答 5

1

你可以这样做:

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

myArray = jQuery.grep(myArray, function(data){
return data != removeThis;
});
于 2013-03-04T14:10:37.353 回答
1

live() 已弃用

不推荐使用 jQuery 版本: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 () {  
于 2013-03-04T14:12:19.867 回答
1

我会做这样的事情:

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

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

于 2013-03-04T14:16:05.980 回答
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);
});
于 2013-03-04T14:20:39.873 回答
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;
  });

看演示

于 2013-03-04T14:28:29.957 回答