1

I'm trying to remove a value from a jquery object. Unfortunately my solution does not work.

Why doesn't it work? And what would be the best way to accomplish this.

$elems = $('.a');
html = 'lenght ='+$elems.length+'<br><br>';

var target = $elems[3];

//Why doesn't this work?
delete $elems[target];

html += 'lenght after delete ='+$elems.length;

$('body').append(html);

here is the jsfiddle

4

3 に答える 3

3

コレクションから要素を削除する場合は、splice()(通常の配列と同様に) を使用します。

$elems.splice(3,1);

コードが機能しない理由:

  1. 配列から存在しないインデックスを削除しようとしています

    var target = $elems[3]; 
    delete $elems[target]; //the index should be "3" and not "target"
    
  2. jQuery オブジェクトからプロパティ (たとえば、プロパティ "3") を設定解除しても、魔法のように別のプロパティ (プロパティ "length") が更新されることはありません。
    jQuery オブジェクト (または必要に応じてコレクション) は配列ではありません。これらは、機能の一部を実装しているため、配列に似たオブジェクトにすぎません。

コンテンツに基づいてコレクションからアイテムを削除したい場合は、おそらく削除したいでしょうfilter()

$elems = $elems.filter(function() {
    return $(this).html().indexOf('3') == -1;
});

上記のスニペットは、html 文字列「3」を含まないコレクション内のすべてのアイテムを保持します。

于 2013-09-14T14:28:08.740 に答える
2

Use

$elems.eq(3).remove();

See : http://api.jquery.com/remove/

于 2013-09-14T14:24:25.677 に答える
0

以下を使用します。

$elems.eq(3).remove();

alert($elems.length);
于 2013-09-14T14:31:34.073 に答える