jqueryマッチしたセットを再計算しますか?

私は次のような人為的な例があるとしましょう:

var allListItems = $('li');
...
doSomeStuff();
...
allListItems.css({color: blue});

最後の行が実行されるときにallListItemsはすべてのリスト項目を保持しなくなる可能性があります。いくつかはDOMに追加された可能性があります。 allListItemsを強制的に再計算する方法はありますか?

私は allListItems = $(allListItems.selector、allListItems.context)を実行できますが、そこには何かが組み込まれていますか?

2

2 答え

いいえ、もう一度やり直してください。

FYI:jQueryオブジェクトは$で始まるという規則があります:

var $ allListItems = $( 'li');

3
追加された

あなたがリフレッシュする必要があるときはいつでも、もう一度やり直してください。それは単なるjavascriptオブジェクトです。新しい価値を望むなら、それをもう一度作成してください。

var allListItems = $('li');
...
doSomeStuff();
...
allListItems = $('li');   //refresh to make sure contains latest li tags
allListItems.css({color: blue});

あなたが本当にそれを行うメソッドを望むなら、私はあなたが使うことができると思います:

$.fn.refresh = function() {
    return $(this.selector, this.context);
}

しかし、 this.selector は時々だけ有効なので、いくつかの状況でのみ動作します。たとえば、 add()のようなさまざまな変更メソッドを使用した後の正確な状態を表すものではありません。

1
追加された
ええ、より現実的なユースケースは、マッチしたセットがすでに渡されたときに関数内にあるときですが、 allListItems = allListItems.selector && $(allListItems.selector、allListItems.context)|| allListItems が行う必要があります
追加された 著者 George Mauer,
@GeorgeMauer - 私は自分の答えに追加したようにadd-on refresh()メソッドを作成することができますが、それはいくつかのケースでのみ動作します(これはjQueryがサポートしていないためです)。
追加された 著者 jfriend00,