0

我正在尝试构建一个 jQuery 插件来过滤提供的 jQuery 对象,只返回一些类似于 .filter(expr) 函数的元素。这更多是为了教育我自己而不是现实世界的问题。但是我不知道如何从提供的 jQuery 对象中删除元素(或者只返回某些其他元素,并不重要)。

代码示例(是的,我知道您可以使用 filter(':Nth-child(n)') 执行此操作,但正如我所说,这是为了教育自己):

$.fn.notNthElement = function(n){
    var i=0;
    this.each( function(){
        i++;
        if(i==n){
            //remove element from this jQuery object (not from DOM)
            i=0;
        }
        //or alternatively:
        else{
            //push this to some result jQuery object
        }
    });
    return this; //or when going the alternative route, return the result jQuery object
}

如何做到这一点?

编辑
我真的在寻找一种从 jQuery 对象中删除特定元素的方法,而不是解决上述问题的一些聪明方法。所以我不想返回提供的 jQuery 对象的子集。

4

2 回答 2

1

我认为您会想要使用过滤器(fn)函数,您可以向该函数提供一个函数,该函数为 jQuery 对象中的每个项目调用。如果函数返回 false,则删除该项目。

例如,这将过滤掉第 5 个项目和 id 为“blue”的项目:

$("div").filter(function (index){
    return !(index == 5 || this.id == "blue");
});

或者,您可以实现自己的自定义选择器,并使用您提到的 filter(expr) 函数。

于 2009-05-20T15:10:18.373 回答
0

注意:没有尝试过,但认为它有效。将其视为元代码...(尽管它可能按原样工作。)

$.fn.notNthElement = function(n){
  var $this = $(this);
  return $this.slice(0,n-1).add($this.slice(n));
};
于 2009-05-14T14:31:27.697 回答