0

提供されたjQueryオブジェクトをフィルタリングして.filter(expr)関数に類似したいくつかの要素のみを返すjQueryプラグインを構築しようとしています。これは、現実世界の問題よりも自分自身の教育のためのものです。ただし、提供された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が「青」のアイテムを除外します。

$("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 に答える