0

一致したものから完全に機能するセレクターを取得するか、少なくともそれらのセットを循環できるようにする必要があります

これが私が必要とするものの例です。最初の 2 つのユース ケースでは正常に機能しますが、最後のユース ケースでは機能しません。

(function($){
      $.fn.getSelector = function(){
          return(this.selector);
      }
    })(jQuery)
4

1 に答える 1

1

経験則として、jQuery オブジェクトが 1 つの文字列セレクターによって構築されている場合にのみ、this.selector を使用できます。もちろん、find('') のように、セレクターが計算され、引き続き使用できる場合もあります。( jquery sourceの add 関数(および pushStack も)を確認してください)。ただし、計算は行われません (場合によっては簡単に実行できる場合でも)。

できることは、セレクターのすべての要素を繰り返し処理し、それらの有効なセレクター パスを計算することです。jquery(AFAIK)にはこれに対する組み込みのソリューションはありませんが、これを行う方法についてはstackoverflowにもいくつかの例があります。

例: jQuery オブジェクトからセレクターを取得するにはどうすればよいですか?ここには、dom を逆方向に計算するような、いくつかの使用可能な回答があります。ただし、すべてのアイテムに対してこれを行う必要があります。それでも、jquery コレクションの場合、選択した要素のみに一致する適切なセレクターが利用できない可能性があるため、多くの誤検出一致が発生します。したがって、それは間違いなく完璧なソリューションではありません。また、加工したアイテムが必要になります。

また、jquery の add メソッドをオーバーライドすることもできます。元のオブジェクトと追加メソッドの両方に文字列型のセレクターがある場合にのみ機能します。このフィドルを確認してください。add メソッドにセレクターパラメーターとして jQuery オブジェクトがあり、そのセレクタープロパティが使用可能な場合にセレクターを構築するなど、多くの方法でアップグレードできると確信していますが、それは始まりです。

于 2012-09-06T10:05:29.677 に答える