2009-05-11 9 views
0

で選択されることはありませんコンテキストを設定します。jQueryの1.3.2で私は、次のHTMLコードを持っているので、体の直接の子は、jQueryの

<html> 
    <head> 
    </head> 
    <body> 
     <div id="never-selected"> 
     </div> 
    </body> 
</html> 

を、私は$(周りのラッパーを作成したいと思います)あなたが許可していますdiv#never-selectedもその内容も含む任意の組み合わせの要素を選択できます。

私は、このようにそれをやろうとしています:

マイベストショットがjQuery("head *, body *:not(#never-selected, #never-selected *)")です;-)

_context = false;  
getContext = function() { 
    if (_context === false) { 
     _gui_dom = jQuery("fuzzy magic selector"); 
    } 
    return _gui_dom; 
}; 


// return a jQuery object filtered to aim the content of the tartiflet GUI only 
select = function(selector) { 
    return jQuery(selector, getContext()); 
}; 

しかし、私は「ファジー魔法セレクター」をキャストするために、適切な式を見つけることfaillingていますが、ドローバックはあなたが頭や体を選択することができないことです、そして、それは非常に迷惑です。 html * doestの作業を使用します。

+0

私はJQueryに慣れていませんが、CSSで "*:not(#foo)*"を使って成功しました。そんなものが緩んでもらえますか? (おそらく、 ":not(#foo)"とチェーンされていて、同じセレクタに貼り付けるのではないでしょうか?) – Anonymous

答えて

1

私は問題を理解しているかどうかわからないんだけど、結果に.not()を使用してみては

select = function(selector){return $(selector).not('#never-selected, #never-selected *')}; 
0

を設定するあなたは、あなたが必要なのjQueryの任意の量を使用して欲しいものを解析するために、独自のカスタムセレクタを書くことができますそれらの要素をつかむ。デフォルトで提供するセレクタでは、すべてを行うことができないことがあります。

私はあなたが求めているものを達成するためにどのように私の頭の上から考えることはできませんが、あなたはこのような何かを行うことができます。

jQuery.extend(jQuery.expr[':'],{ 
    everything_but: function(el,sel) { 
     var everything = jQuery(el).clone(); 
     everything.find(sel).remove(); 
     return everything; 
    } 
}); 

私は間違いなく私の実装が動作すると言うことはできませんが、それはかもしれませんあなたが望むものを達成するために自分のセレクターをどのように実装することができるか、あなたに考えを与えます。

通常通り使用できます。このようなもの:

var select = $('*:everything_but(#never-selected)') 

あなた自身のセレクタを書くことは、あなたのスクリプトでどうしようとしているようです。がんばろう!

0

引数が渡されたjQuery()を呼び出し、自動的に.filter()関数が働く可能性があります。

function select() { 
    var jquery = jQuery.apply(args); 
    return jquery.filter(":not(#never-selected, #never-selected *"); 
} 

大気中でコード化されているかわかりません。

関連する問題