2009-07-24 17 views
20

द्वारा ढूंढें मुझे विशिष्ट css विशेषता के आधार पर एक तत्व ढूंढना होगा। css इनलाइन लागू किया गया है और मैं कक्षा का उपयोग नहीं कर सकता। क्या jQuery में इसे प्राप्त करने के लिए वैसे भी है?jQuery इनलाइन सीएसएस विशेषता

उत्तर

26

आप एक attribute चयनकर्ता

उदाहरण के लिए इस्तेमाल कर सकते हैं

$(":radio [style*='regular']") 

किसी भी इनपुट रेडियो कि शैली विशेषता

+1

क्या होगा यदि हमें दो मानों के आधार पर चयन करना है 'बाएं: 180 पीएक्स' और 'टॉप: 360 पीएक्स'? –

+1

आपको केवल एकाधिक विशेषता चयनकर्ताओं का उपयोग करने की आवश्यकता है उदा। '$ (" [बाएं = '180 पीएक्स'] [शीर्ष = '360 पीएक्स'] ") ' –

3

कुछ की तरह में 'regular' शामिल की एक लिपटे सेट वापसी होगी:

$('selector').each(function() { 
    if($(this).attr('style').indexOf('font-weight') > -1) { 
     alert('got my attribute'); 
    } 
}); 
+0

.indexOf 0 वापस कर सकता है, जिसका मूल्यांकन झूठी – mkoryak

+0

@mkoryak पर किया जाएगा - धन्यवाद, बस एहसास हुआ, इसे ठीक किया गया। – karim79

1
var ccsStyle="font-weight:bold"; 
var els = []; 
$("*").each(function(){ 
    var st = $(this).attr("style"); 
    if(st.indexOf(cssStyle) > -1) els.push(this); 
}); 
//do stuff with els 
0

आप विशेषता झंडा इस्तेमाल कर सकते हैं और यदि आप विशिष्ट प्रारूप जानते हैं कि क्या है उपयोग किया गया है।

$("[style*='position']") 

यह सभी तत्वों को उस स्थिति सीएसएस विशेषता परिभाषित पाते हैं।

4

मुझे लगता है कि आप ऐसा करने के लिए एक कस्टम jQuery चयनकर्ता लिखने में सक्षम हो सकते हैं।

उदाहरण के लिए, यदि आप कुछ शैली विशेषता द्वारा चयन करना चाहते हैं, आप कर सकते हैं:

jQuery.extend(jQuery.expr[':'], { 
    styleEquals: function(a, i, m){ 
     var styles = $(a).attr("style").split(" ") 
     var found = false; 
     for (var i = 0; i < styles.length; i++) { 
      if (styles[i]===m[3]) { 
       found = true; 
       break; 
      } 
     } 
     return found; 
    } 
}); 

तो यह किसी अन्य चयनकर्ता के साथ conjuction में इस्तेमाल किया जा सकता आप जैसे कुछ शैली के साथ सभी इनपुट तत्वों का चयन कर सकते यह:

$('input:styleEquals('width=10px')') 
+1

यह कार्यक्षमता पहले से ही jQuery भाषा में शामिल है। आपको केवल $ ('चयनकर्ता [cssAttribute = value]') –

+0

jquery इनबिल्ट चयनकर्ता केवल तभी काम करता है जब यह एक सटीक मिलान हो, तो यह केवल तभी मिलेगा जब शैली = "पूर्ण;" यदि शैली = "पूर्ण; बाएं" नहीं है। इसलिए मैंने जो समाधान पोस्ट किया है वह सभी मूल्यों को पूर्ण मूल्य के साथ ढूंढने के लिए है, न केवल सटीक मिलान – Surya

+0

@ सूर्य: हाँ, मेरे पास सेरेब्रो-रेक्टल इंटरटिसिस का एक बुरा मामला था। मुझे नहीं पता कि मैं क्या सोच रहा था। –

16

मुझे लगता है कि यह सबसे साफ समाधान है।

$('*').filter(function() { return $(this).css('z-index') == 101 }) 
0

आप .attr() के साथ किसी भी इनलाइन विशेषता के लिए खोज कर सकते हैं .. .attr('attr_name')

http://api.jquery.com/attr/

css_inline_value = $(element).attr('style'); 

if (css_inline_value = search_value) { 
    // do stuff 
} 
3

हाँ, मुझे लगता है कि: जहां z- सूचकांक विशेष महत्व है आप सभी तत्वों को खोजना चाहते हैं कहो वांछित परिणाम प्राप्त करने का सबसे तेज़ और आसान तरीका संपत्ति वर्ग चयनकर्ता के साथ शैलियों को लक्षित करना होगा।

जैसा कहा गया है से पहले:

$('div.yourClass[style*="background-color:Blue"]).css('color', 'White'); 

इस तरह हम एक ही कक्षा नीले रंग की पृष्ठभूमि है और उन सब को बता सफेद रंग पाठ करने के लिए उस के साथ सभी divs लक्ष्य। बेशक .css के बजाय हम यहां कुछ भी उपयोग कर सकते हैं, .animate और एनिमेटेड होने के लिए सभी ब्लूज़ बताएं आदि। इससे मुझे डीबी संबंधों और डीबी में अजीब चीजों को स्थापित करने में बहुत मदद मिली।

मैं कम सामान्य हुआ करता था, और साथ लक्ष्य तार: शामिल है ... लेकिन फिर किसी आधार के लिए चला जाता है, और ग्रंथों और लेबल, और अलविदा अलविदा कोड में परिवर्तन;)

आशा है कि यह मदद करता है।

+0

कोड सर में एक टाइपो है। '$ ('Div.yourClass [शैली * =" पृष्ठभूमि रंग: नीला "]')। सीएसएस ('रंग', 'व्हाइट');' –

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