2012-02-27 13 views
3

私はクリック可能なスライドショー要素を持つコンテナdivを持っています。次または前のボタンをダブルクリックすると、スライドショー要素の後にあるいくつかのタグが強調表示されます。次のdivの選択を無効にすると、ダブルクリックは次のdivを選択します。選択からDIVを保護する

-webkit-touch-callout: none; 
-webkit-user-select: none; 
-khtml-user-select: none; 
-moz-user-select: none; 
-ms-user-select: none; 
-o-user-select: none; 
user-select: none; 

を私はちょうど欲しい、div要素の選択とdiv要素内のすべての要素を無効にしたくないので、このCSSは私のために動作しません。今私が使用しているのよう

他のdivからのダブルクリックの選択からdivの子要素を保護します。 divから選択肢を保護する方法はありますか?

答えて

4

あなたdivからすべての子孫を選択するために探している場合は、次の操作を行います。

div * { 
    -webkit-touch-callout: none; 
    -webkit-user-select: none; 
    -khtml-user-select: none; 
    -moz-user-select: none; 
    -ms-user-select: none; 
    -o-user-select: none; 
    user-select: none; 
} 

しかし、明らかにスピードの問題は、特に生産のために、このシナリオです。私はあなたのHTMLを変更し、divの直接の子孫を選択することをお勧めします。

div h1, 
div p, 
div span/*, etc. */ { 
    -webkit-touch-callout: none; 
    -webkit-user-select: none; 
    -khtml-user-select: none; 
    -moz-user-select: none; 
    -ms-user-select: none; 
    -o-user-select: none; 
    user-select: none; 
} 

あなたはそれらの要素のそれぞれに対して、divの子どもたちにuser-select: noneの既定の継承を無効にしたい場合は、(クロスブラウザの宣言を含む)user-select: textを追加します。

+0

*はテストには問題ありませんが、実用コードでは使用しないでください。 – Tom

+0

あなたは 'div'のすべての子孫をつかみたいと思っていました。より具体的にするには、クラスまたはIDでアスタリスクセレクタを使用します。私は本当にこれがdownvoteの価値があるとは思わない。 –

+1

となっており、その理由は、CSSが '右から左へ'から '左から右へ'ではないということです。これは、まず、Webサイト上のすべての要素を取得してから、左に移動して、親divがあるかどうかを確認することを意味します。これは遅いです。それを例えば '*#div'と比較してください。まず、要素を1つとり、その親が何かであるかどうかを確認します。私はそれが下の投票に値することに同意します:) – mkk