2012-07-18 17 views
8

का उपयोग करते समय छुपाए गए चेकबॉक्स की जांच न करने वाले लेबल पर क्लिक करना मैं चेकबॉक्स तत्व से जुड़े लेबल का उपयोग करके एक कस्टम डिज़ाइन किया गया चेकबॉक्स बनाने और चेकबॉक्स को छिपाने (प्रदर्शन: कोई नहीं) बनाने का प्रयास कर रहा हूं।आईई 7 या 8

यह आईई को छोड़कर सभी ब्राउज़रों में ठीक काम करता है, जिसके लिए लेबल को क्लिक करने योग्य होने के लिए चेकबॉक्स दिखाना आवश्यक है।

यहाँ मेरी कोड ...

एचटीएमएल है

<input type="checkbox" id="myCheck" />​ 

सीएसएस

label.checkbox { 
    border:1px solid #666; 
    width:25px; 
    height:23px; 
    display:block; 
}​ 

jQuery

$("input[type=checkbox]").each(function() { 
    $(this).hide().before('<label for="' + $(this).attr("id") + '" class="checkbox"></label>'); 
}); 

$("input[type=checkbox]").live('change', function() { 
    if ($(this).prop('checked') == true) { 
     $('label[for=' + $(this).attr("id") + ']').html("X") 
    } else { 
     $('label[for=' + $(this).attr("id") + ']').html("") 
    } 
});​ 

या jsfiddle

012,
+0

मुझे लगता है यह फ़ायरफ़ॉक्स में भी होता है छोड़ देते हैं, लेकिन मुझे यकीन नहीं कर रहा हूँ। – Inkbug

+0

ओएसएक्स पर एफएफ के नवीनतम संस्करण में नहीं, हालांकि विंडोज़ पर कोशिश नहीं की गई। – Tom

उत्तर

9

मैं यह करने के लिए एक और अधिक efective तरीका है कि क्या वहाँ पता नहीं है, लेकिन आप पेज से बाहर चेकबॉक्स तत्व स्थिति की स्थापना करके ऐसा कर सकते हैं,

.hiddenEl { 
    position:absolute; 
    top: -3000px; 
} 


$("input[type=checkbox]").each(function() { 
    $(this).addClass("hiddenEl").before('<label for="' + $(this).attr("id") + '" class="checkbox"></label>'); 
}); 

DEMO


अद्यतन

और आप भी checbox अस्पष्टता शून्य पर सेट कर सकते हैं, जो इसे "dispayl: none",

के बिना छुपाएगा
$(this).css("opacity", 0) 

या

$(this).fadeTo(0, 0) 
+7

नोट: 'शीर्ष: -3000px' (या 99 99 पीएक्स) के बजाय 'बाएं: -3000px' का उपयोग करना आम तौर पर बेहतर होता है। जब आप 'टॉप' का उपयोग करके लेबल पर क्लिक करते हैं, तो फोकस रेडियोबूटन पर सेट किया जाएगा और आईई 8 इसे पृष्ठ में देखने के लिए दुर्भाग्यपूर्ण साइड इफेक्ट होने के कारण इसे देखने में मदद करेगा। इसलिए बशर्ते आपकी सामग्री क्षैतिज रूप से फिट न हो, क्षैतिज स्क्रॉल बार के साथ 'शीर्ष' –

+0

की तुलना में 'बाएं 'का उपयोग करना बेहतर है' ओपेसिटी' प्रॉपर्टी इंटरनेट एक्सप्लोरर में संस्करण IE9 तक समर्थित नहीं है, इसलिए मुझे 'फ़िल्टर: अल्फा (अस्पष्टता' का उपयोग करना पड़ा = 0) '। [मोज़िला-सीएसएस-अस्पष्टता] (https://developer.mozilla.org/en-US/docs/Web/CSS/opacity) – ityler22

+0

@ ityler22, मुझे लगता है कि आपको jquery द्वारा प्रबंधित किए जाने वाले उस बेक्यूज के बारे में चिंता करने की ज़रूरत नहीं है । – ocanal

2

इस प्रयास करें:

#myCheck{ 
    position:absolute; 
    left:-9999px; 
    } 

और चेक बॉक्स "दृश्यमान"