2012-10-07 3 views
5

可能性の重複:
Is there a way to make a DIV unselectable?jQueryやCSSを使用してたくさんの要素を選択できないようにする方法はありますか?

私はそこに要素のためにその仕事を解の数を見てきました。しかし、私はラベルとボタンのある領域を持っています。 1つの要素だけではなく、DIVのすべての要素です。

その中に含まれるものをどのようにすることができますか?DIVは選択できません。 DIVには、クリックできるようにするボタンがあるため、マスクレイヤーをDIVに置くことはできません。

+1

はあなたをしました$(this).each(function(){//あなたが望むものを無効にする}}を試してください。 –

+2

親が選択できない仕事を設定していませんか?すべての子供が含まれるべきです。他の賢明なtryセレクター 'mydivclass *' – charlietfl

+0

私が選択できないものは継承されません –

答えて

5
$(".yourdiv").children().css({userSelect: 'none'}); 

これは、CSS user-selectプロパティを使用して選択を無効にしたい場合です。もしそうでなければ、上記は他の方法に容易に一般化することができる。

上記のみ.find()メソッドを使用し、すべて子孫を選択するために、直接の子を選択します。

$(".yourdiv").find("*").css({userSelect: 'none'}); 

あなたはまた、純粋なCSSを使用してこれを行うことができます。

.yourdiv * { /*this selects all elements that are children of yourdiv*/ 
    /*user-select: none rules*/ 
} 

または:

.yourdiv > * { /*this selects all elements that are direct descendants of yourdiv*/ 
    /*user-select: none rules*/ 
} 
+0

ありがとうございます。私は他のプロパティも同様に拡張することができます:-webkit-user-select:none;/* Chrome/Safari */ -moz-user-select:none;/* Firefox */ -ms-user-select:none;/* IE10 + */ -o-user-select:なし; ユーザ選択:なし; –

+0

'$("。yourdiv * ")'は子どもだけでなくすべての子孫をカバーする – charlietfl

+0

@SamanthaJ必要に応じて新しいバージョンのjQueryが自動的に接頭辞を追加します。 – Chris

1

独自01​​CSSの変動がinherありますそれらをサポートするすべてのブラウザでは、この例を参照してください:

http://jsfiddle.net/yD7bM/

あなたの問題は、これらのCSSのプロパティをサポートしていないブラウザ、すなわち、オペラやIE < = 9幸い、両方のこれらの代替実装です:unselectable attributeを。ただし、この属性は継承されません。

最も適切な解決策は、必要なすべての要素にunselectable="on"属性をHTMLで選択できないようにすることです(つまり、サーバー側で行うことをお勧めします)。ただし、これがオプションでない場合は、a recursive functionを使用してJavaScriptを使用して行うことができます。

あなたはjQueryのを使用している場合は、「選択不可能」クラスを使用して各要素にunselectable属性を追加するには、このような何かを行うとその子孫のすべての可能性:

$(".unselectable").find("*").andSelf().attr("unselectable", "on"); 

デモ:http://jsbin.com/ulazic/2

+0

あなたは、 'unselectable'属性のドキュメントを参照できますか? – Pavlo

+0

@パブロ:はい。完了しました。 –

+0

Uhh、ブラウザサポートはどうですか? – Pavlo

関連する問題