2012-10-07 16 views
5

संभव डुप्लिकेट:
Is there a way to make a DIV unselectable?मैं jQuery या CSS का उपयोग करके कई तत्वों को अचयनित कैसे कर सकता हूं?

मैं वहाँ बाहर समाधान के एक नंबर एक तत्व के लिए है कि काम को देखा है। हालांकि मेरे पास लेबल और बटन वाला क्षेत्र है। यह सिर्फ एक तत्व नहीं है यह DIV के भीतर हर तत्व है।

मैं DIV के भीतर कुछ भी शामिल कैसे कर सकता हूं? ध्यान दें कि मैं DIV पर मास्क लेयर नहीं डाल सकता क्योंकि DIV में बटन क्लिक करने में सक्षम होने की आवश्यकता है।

+1

आप क्या $ (यह) .each (function() {// अक्षम करें जो आप चाहते हैं} का उपयोग करने का प्रयास करें); –

+2

अभिभावक अचयनित काम को सेट नहीं करता है? सभी बच्चों को शामिल किया जाना चाहिए। अन्य बुद्धिमान चयनकर्ता 'mydivclass * ' – charlietfl

+0

जो मैंने अचयनित पढ़ा है उससे विरासत में नहीं मिला –

उत्तर

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

उस मामले में आप सीएसएस user-select संपत्ति का उपयोग कर चयन को निष्क्रिय करना चाहते। यदि नहीं, तो उपर्युक्त अन्य तरीकों से आसानी से सामान्यीकृत किया जा सकता है।

ऊपर केवल प्रत्यक्ष बच्चों का चयन करता है, सभी वंश को चुनने के लिए, .find() विधि का उपयोग करें:

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

या::

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

आप भी इस का उपयोग कर शुद्ध सीएसएस क्या कर सकते हैं

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

धन्यवाद। मैं इसे अन्य गुणों को करने के लिए कैसे बढ़ा सकता हूं: -webkit-user-select: none;/* क्रोम/सफारी */ -मोज़-उपयोगकर्ता-चयन: कोई नहीं;/* फ़ायरफ़ॉक्स */ -ms-user-select: none;/* आईई 10 + */ -o-user-select: none; उपयोगकर्ता-चयन: कोई नहीं; –

+0

'$ ("। Yourdiv * ") 'सभी वंशजों को कवर नहीं करेगा सिर्फ बच्चों को – charlietfl

+0

@ समन्थाज jQuery के नए संस्करण स्वचालित रूप से आवश्यक होने पर उपसर्ग जोड़ते हैं। – Chris

1

मालिकाना user-select सीएसएस रूपों inher हैं उन सभी ब्राउज़रों में इसका समर्थन किया जो उनका समर्थन करते हैं। इस उदाहरण देखें:

http://jsfiddle.net/yD7bM/

आपकी समस्या ब्राउज़रों कि इन सीएसएस गुण, अर्थात् ओपेरा और IE < = 9. का समर्थन नहीं करते है सौभाग्य से इन दोनों को एक विकल्प लागू: unselectable attribute। हालांकि, यह वह विशेषता है जो विरासत में नहीं है।

सबसे अच्छा समाधान है कि प्रत्येक तत्व पर unselectable="on" विशेषता डालें जो आपको HTML में अचयनित करने की आवश्यकता है (यानी यह सर्वर-साइड करें)। हालांकि, अगर यह कोई विकल्प नहीं है, तो आप इसे a recursive function का उपयोग करके जावास्क्रिप्ट का उपयोग करके कर सकते हैं।

आप jQuery उपयोग कर रहे हैं आप के साथ वर्ग "unselectable" और उसके वंश के सभी प्रत्येक तत्व को unselectable विशेषता जोड़ने के लिए कुछ इस तरह कर सकता है:

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

डेमो: http://jsbin.com/ulazic/2

+0

क्या आप कृपया, 'अचयनित' विशेषता पर किसी दस्तावेज़ को इंगित कर सकते हैं? – Pavlo

+0

@Pavlo: ज़रूर। किया हुआ। –

+0

उह, ब्राउज़र समर्थन के बारे में क्या? – Pavlo

संबंधित मुद्दे

 संबंधित मुद्दे