jQuery

2012-08-10 3 views
11

में विकलांग विशेषता टॉगल मैं एक चेकबॉक्स है कि सक्षम करें या किसी का चयन करें तत्वjQuery

वास्तव में मुझे लगता है कि ठीक काम करता है कोड के इस सरल टुकड़ा का उपयोग को निष्क्रिय कर दिया है।/सक्षम

$("#filtri").change(function(){ 
    if ($("#menuContinenti").attr("disabled")) { 
     $("#menuContinenti").removeAttr("disabled"); 
    } else { 
     $("#menuContinenti").attr("disabled", "disabled"); 
    } 
}); 

इस का सबसे अच्छा तरीका है या विकलांग के बीच स्विच करने के लिए एक .toggle() समारोह की तरह कुछ है?

+0

$ .is फंक्शन का उपयोग करके देख सकते हैं कि यह टूटा नहीं है .. इसे ठीक मत करो :) – Nope

+0

@ FrançoisWahl हाँ यह काम करता है (जैसा कि मैंने लिखा है), लेकिन क्या यह इस टी को रोकने का सबसे अच्छा तरीका है पूछना? मुझे आशा है कि jquery कुछ .toggle() फ़ंक्शन की तरह कुछ प्रदान करता है जैसे अक्षम – Naigel

+1

में बूलियन विशेषताओं के बीच स्विच करने के लिए jQuery में टॉगल होता है लेकिन केवल दृश्यता टॉगल करने के लिए: http://api.jquery.com/toggle/ मुझे jQuery की जानकारी नहीं है अक्षम/सक्षम करने के लिए अंतर्निहित टॉगल करें लेकिन आप अपने दस्तावेज़ों में सभी प्रभावों पर एक नज़र डाल सकते हैं: http://api.jquery.com/category/effects/ – Nope

उत्तर

37

आप विकलांगों के लिए .prop उपयोग करना चाहिए:

$("#menuContinenti").prop('disabled', function() { 
    return ! $(this).prop('disabled'); 
}); 

अद्यतन: नहीं पता था वर्तमान संपत्ति मूल्य कार्य करने के लिए एक तर्क है, इस संस्करण भी क्लीनर है:

$("#menuContinenti").prop('disabled', function (_, val) { return ! val; }); 

अद्यतन: ES2015

$("#menuContinenti").prop("disabled", (_, val) => !val); 
+0

यह अच्छा और छोटा है। हालांकि '.prop' का उपयोग करने का क्या फायदा है? मैं खुद को नहीं जानता लेकिन मुझे आपके कोड की कमी पसंद है। – Nope

+0

अच्छा। मैंने ऐसा कभी नहीं सोचा था। –

+0

'this.disabled'' .prop ('अक्षम') ' –

7

आपको लगता है कि कुछ इस तरह करता है अपने खुद के प्लगइन लिख सकते हैं।

jQuery के बाद इसे एक स्क्रिप्ट फ़ाइल में अधिमानतः जोड़ें।

(function($) { 
    $.fn.toggleDisabled = function(){ 
     return this.each(function(){ 
      this.disabled = !this.disabled; 
     }); 
    }; 
})(jQuery); 

तो इस तरह इसका इस्तेमाल:

$('#my-select').toggleDisabled(); 

सौजन्य: Toggle input disabled attribute using jQuery

1

आप की तरह नीचे

$("#filtri").change(function(){ 
    $("#menuContinenti").attr("disabled", ! $(this).is(':checked'));  
}); 
+1

मुझे यह वास्तव में पसंद है क्योंकि यह बहुत छोटा है – Sudar