0

効率的に維持したい要素の配列があり、時間の経過とともに要素の配列を追加および削除します。

var myElements = $('.initial');

jquery のmerge()は、新しい配列を作成せず、既存の配列に追加するだけなので、項目を追加するのに最適なようです。

$.merge(myElements, $('.to-add'));

配列をインプレースで変更する、削除に相当するものはありますか? 何かのようなもの:

$.exclude(myElements, $('.to-remove'));

私は実際に DOM 要素の配列を持っており、セレクターは単なる例として使用されています。

4

4 に答える 4

1

jquerynotメソッドを使用し、

var filtered = $(myElements).not($('.to-remove'));

于 2016-01-12T04:04:41.550 に答える
0

を使用deleteして配列から要素を削除してから、 を使用$.grepして空のスペースを削除できます。

//[0] since $("#id") will be a jquery Object
//[0] will return the particular DOM element

var orgArray = [$("#merge1")[0],$("#merge2")[0],$("#merge3")[0]];
var secArray = [$("#merge4")[0],$("#merge5")[0]]

// Will merge other two values; 
// jQuery merge will merge contents of 
//two array into first array

var merArray = $.merge(secArray, orgArray);

// Want to remove $("#merge2");

var getIndex = merArray.indexOf($("#merge2")[0]);
    if(getIndex >-1){
     delete merArray[getIndex] 
    }

// length before filtering
$("#l1").text(merArray.length);

//Now will remove Empty Space

merArray = $.grep(merArray,function(n){
 return n==0 || n
});
$("#l2").text(merArray.length);

JSFIDDLE

于 2016-01-12T04:42:54.993 に答える
0

配列リテラル用のメソッドを使用しています。add()jQueryには、セレクターに一致する要素を含む変更された jQuery オブジェクトを返すメソッドが既にあります

var myElements = $('.initial');
var newCollection = myElements.add('.to-add');    
newCollection.not('.to-remove').doSomething();

jQuery オブジェクトは配列のようなものですが、配列とは考えないでください。

参照add()

全体的な目的が実際に何であるかは明確ではありませんが、API 内に既に存在する任意の数のフィルタリング方法で管理できる可能性が最も高いです。

于 2016-01-12T04:55:25.910 に答える