2

HTML 要素を jQuery で 2 回ラップすることは、同じ DOM 要素のインスタンスを返すため、安全な操作です。

var $a = $('#foo');
var $b = $($a);
alert($b.get(0) === $a.get(0)); // true

これにより、セレクター、DOM 要素、または jQuery インスタンスのいずれかを含む構成オブジェクトを柔軟にセットアップできます。

私はそれを知らなかったので、私の個人的なライブラリで、オブジェクトを安全にラップおよびアンラップするメソッドで jQuery を拡張しました。

jQuery コアには、相対的な jQuery インスタンスから DOM 要素をアンラップするための安全な後方操作がありますか?

私はそのように振る舞う何かを意味します:

function unwrap(obj) {
    return (obj instanceof jQuery) ? obj.get(0) : obj;
}

これは、毎回その条件付きチェックを回避できるほどスマートです。

4

2 に答える 2

1

DOM オブジェクトと jQuery オブジェクトの検出には、この質問に対する答えが含まれているようです。

各 jQuery オブジェクトには jquery プロパティがあります。何かのようなもの:

function unwrap(obj) {
    return (obj.jquery) ? obj.get(0) : obj;
}
于 2013-01-15T17:26:24.440 に答える
1

すべてを jQuery でラップし、結果の配列から 0 番目の要素を取得する方が理にかなっています。

jQuery( elem )[0];

jQuery オブジェクトを渡すjQuery( jQueryObject )と、同じ要素が同じ順序で返されます。要素を渡すと、要素が返されます。jQuery オブジェクトを渡すと、その中の最初の要素が返されます。セレクターを渡すと、DOM で最初に一致したものが返されます。

jQuery UI で同様の手法を使用して、基本的に、オプションで渡したセレクター/要素/jquery オブジェクトをウィジェットに解決します。

于 2013-01-15T17:37:56.740 に答える