2012-01-17 11 views
6

तो मैं यह निर्धारित करने की कोशिश कर रहा हूं कि किसी तत्व की सीमा है या नहीं, तो मैं $(el).css() के साथ खेल रहा हूं। मैं .css("border-style", "solid") का उपयोग सीमा है, जो काम करता है स्थापित करने के लिए है, लेकिन वास्तव में यह 4 व्यक्तिगत शैली सेट:यह जांचने के लिए JQuery का उपयोग करें कि तत्व की सीमा है या नहीं?

if ($(el).css("border-right-style") == "solid" && $(el).css("border-left-style") == "solid" && ...) {} 
:

border-right-style 
border-left-style 
border-top-style 
border-bottom-style 

तो, एक सीमा के लिए जाँच थोड़ा बोझिल के रूप में आप की तरह कुछ करने के लिए है

बस $(el).css("border-style") != "" की जांच कर रहा है border-style के बाद से काम नहीं करता है हमेशा "" के बराबर होता है।

क्या ऐसा करने के लिए एक और शानदार तरीका है?

+0

आप कक्षाओं के साथ क्यों काम नहीं करते? – jcvegan

+0

मैं आमतौर पर करता हूं लेकिन इस विशेष मामले में, शैली इतनी गतिशील होती है और प्रत्येक तत्व के लिए इतना विशिष्ट है कि इसे इस तरह से करना आसान है। –

उत्तर

8

border-style आशुलिपि है और आप नहीं कर सकते हैं, ताकि आप उन्हें separatly प्राप्त करने के लिए है, क्योंकि के रूप में प्रति Jquery CSS documentation

Shorthand CSS properties (e.g. margin, background, border) are not supported. 
For example, if you want to retrieve the rendered margin, 
use: $(elem).css('marginTop') and $(elem).css('marginRight'), and so on. 
+0

ओह वाह। तो यह आधिकारिक है! धन्यवाद, यह बताता है। –

3

यदि आप जानना चाहते हैं कि 4 गुण सभी सेट हैं, तो हाँ आपको 4 गुणों की जांच करनी होगी। हालांकि मैं चयनकर्ता को कैश करेगा।

$el = $('a'); 
if ($el.css("border-right-style") == "solid" && $el.css("border-left-style") == "solid" && $el.css("border-top-style") == "solid" && $el.css("border-bottom-style") == "solid") 
{ 
    alert('yay'); 
} 

jsFiddle

+0

तो मेरे पास एक सवाल है, क्या "सीमा-शैली" भी सीएसएस में वास्तव में मौजूद है? या यह सिर्फ 4 के लिए एक शॉर्टकट है? –

+0

उत्तरार्द्ध, सीमा-शैली 4 गुण सेट करता है। यदि आप डीबगर टूल का उपयोग करने का निरीक्षण करते हैं तो आमतौर पर "गणना की गई शैलियों" विकल्प होते हैं जो उन्हें सभी दिखाएंगे। एकल रेखा सीमा: 1 पीएक्स ठोस नीले 12 गुण सेट करता है। – Sinetheta

1

मैं अगर यह संभव है कि पता नहीं है उन दोनों को जो भी आप कोशिश कर रहे हैं करो डीओएम केवल उस तत्व के लिए शैलियों को प्रदान करता है जो इनलाइन या स्क्रिप्ट में तत्व को असाइन किया गया था। यह दिखाता नहीं है कि क्या इसे सीएसएस घोषणाओं से सीमा जैसी शैली मिली है।

1

तुम अब भी गुणों का परीक्षण करने के लिए है, लेकिन यह है कि यह एक छोटे से अधिक सार कर सकते हैं ...

function check(sel, prop) { 
    var i, property, $o = $(sel), directions = ["left", "right", "top", "bottom"]; 

    for (i = 0; i < directions.length; i++) { 
     property = $o.css(prop + '-' + directions[i] + '-style'); 
     if (property !== 'solid') { 
      return false; 
     } 
    } 

    return true; 
} 
+0

मैंने इस तरह कुछ के बारे में सोचा लेकिन आईएमओ पढ़ने के लिए मुश्किल है। –

+0

थोड़ा बदलाव के साथ आप इसे एक jQuery प्लगइन बना सकते हैं और संपत्ति का नाम सार कर सकते हैं ताकि आप इसे अन्य शॉर्टेंड संपत्ति मूल्यों का परीक्षण करने के लिए पुन: उपयोग कर सकें। आप विधि की पठनीयता को कम करते हैं लेकिन समग्र पठनीयता ('$ ('पी') बढ़ाते हैं। चेकप्रोपर्टी ('मार्जिन', '5 पीएक्स')')। – lsoliveira

0

यह विरासत में मिला सीएसएस फ़ाइलों से शैली मूल्यों को प्रदर्शित कर सकते हैं ....

चेतावनी ($ ("चयनकर्ता") सीएसएस ("सीमा-नीचे-रंग"))।

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