2011-10-03 9 views
9

मैं modernizr उपयोग करने के लिए :nth-child ब्राउज़र समर्थन के लिए परीक्षण करने के लिए कोशिश कर रहा हूँ, लेकिन मैं इसे कैसे करना यकीन नहीं है, मैं इस एक http://jsfiddle.net/laustdeleuran/3rEVe/ जो :last-child के लिए परीक्षण में पाया गया लेकिन मैं नहीं जानता कि कैसे :nth-child (मैं पता लगाने के लिए इसे बदलने के लिए ऐसा करने के बारे में भी सोच रहा था क्योंकि मुझे लगता है कि :last-child का समर्थन नहीं करने वाले ब्राउज़र :nth-child का समर्थन नहीं करते हैं, लेकिन मुझे यकीन नहीं है)आधुनिकizr का उपयोग कर nth-child के लिए परीक्षण कैसे करें?

क्या आप लोग मेरी मदद कर सकते हैं? अग्रिम में धन्यवाद!

+2

ईमानदारी से कहूं तो यह मान लेना कि एक ब्राउज़र या तो दोनों 'समर्थन करता है, बहुत ही उचित है: n वें वाले बच्चे()' और ': अंतिम child', या किसी भी समर्थन नहीं करता। – BoltClock

+0

इस प्लगइन को आजमाएं .. http://selectivizr.com/
केवल सीएसएस फ़ाइल के अंतर्गत/उसके बाद डालें! –

उत्तर

13

मैं सिर्फ पता लगाने के लिए एक समारोह लिखा है: के लिए n वें-बाल सहायता आप

function isNthChildSupported(){ 
var result = false, 
    test = document.createElement('ul'), 
    style = document.createElement('style'); 
test.setAttribute('id', 'nth-child-test'); 
style.setAttribute('type', 'text/css'); 
style.setAttribute('rel', 'stylesheet'); 
style.setAttribute('id', 'nth-child-test-style'); 
style.innerHTML = "#nth-child-test li:nth-child(even){height:10px;}"; 
for(var i=0; i<3; i++){ 
    test.appendChild(document.createElement('li')); 
} 
document.body.appendChild(test); 
document.head.appendChild(style); 
    if(document.getElementById('nth-child-test').getElementsByTagName('li')[1].offsetHeight == 10) {result = true;} 
document.body.removeChild(document.getElementById('nth-child-test')); 
document.head.removeChild(document.getElementById('nth-child-test-style')); 
    return result; 
} 

उपयोग:

isNthChildSupported() ? console.log('yes nth child is supported') : console.log('no nth child is NOT supported'); 

आप इस क्रिया में यहाँ http://jsbin.com/epuxus/15

भी काम करता है देख सकते हैं jQuery :nth-child और CSS :nth-child के बीच एक अंतर है।

jQuery :nth-child किसी भी ब्राउज़र jQuery का समर्थन करता है लेकिन सीएसएस में समर्थित है IE9, क्रोम, सफारी और Firefox

+3

आपके उत्तर के लिए धन्यवाद, यह काम करता है लेकिन थोड़ा और देखने के बाद मुझे यह https://gist.github.com/441842 मिला जो वास्तव में सभी चयनकर्ताओं के लिए परीक्षण करता है, उम्मीद है कि कोई भी इसे उपयोगी पाएगा। – javiervd

+1

मुझे पता है कि यह पुराना है, लेकिन क्या इस फ़ंक्शन का उपयोग करते समय किसी और को IE8 में कोई त्रुटि प्राप्त होती है? Http://stackoverflow.com/questions/6631871/modifying-the-innerhtml-of-a-style-element-in-ie8 – doubleswirve

3

मुझे याद है कि चयनकर्ताओं समर्थन के लिए परीक्षण एक Modernizr चयनकर्ताओं प्लगइन था, लेकिन मैं नहीं कर सकता में :nth-childis supported इसे अभी ढूंढें। आप इसे देख सकते हैं: http://javascript.nwbox.com/CSSSupport/ जो समान है।

2

तुम भी Selectivizr का उपयोग असमर्थित ब्राउज़र

+0

यह बहुत अच्छा काम करता है। – hellojebus

1

मोहसिन को CSS3 चयनकर्ता समर्थन जोड़ने के लिए, अपने निर्णय के लिए धन्यवाद कर सकते हैं। कोई तो jQuery की जरूरत है:

function test(){ 

    var result = false, 
     test = $('<ul id="nth-child-test"><li/><li/><li/></ul>').appendTo($('body')), 
     style = $('<style type="text/css">#nth-child-test li:nth-child(even){height:10px;}</style>').appendTo($('head')); 

    if(test.children('li').eq(1).height() == 10) 
    result = true; 

    test.remove(); 
    style.remove(); 

    return result; 

}; 
+0

एक आकर्षण की तरह काम करता है – Alex