2012-03-08 17 views
284

jQuery में, .hide() और .show() विधियां हैं जो सीएसएस display: none सेटिंग सेट करती हैं।दृश्यता सेट करने के लिए jQuery .hide() के समतुल्य: छुपा

क्या कोई समकक्ष फ़ंक्शन है जो visibility: hidden सेटिंग सेट करेगा?

मुझे पता है कि मैं .css() का उपयोग कर सकता हूं लेकिन मुझे .hide() या इससे कुछ फ़ंक्शन पसंद हैं। धन्यवाद।

+2

उपयोग करने के लिए आप अपने खुद के आधार को लागू कर सकते है '.ogoggle()' पर – zerkms

+0

मैं इसके लिए jQuery की toggleClass() विधि का भी प्रशंसक हूं :) http://jqueryui.com/toggleClass/ नीचे दिए गए मेरे उत्तर में साझा किए गए उदाहरण को देखने के लिए स्वतंत्र महसूस करें http://stackoverflow.com/a/ 14632687/1056713 –

उत्तर

364

आप अपने स्वयं के प्लगइन बना सकते हैं।

jQuery.fn.visible = function() { 
    return this.css('visibility', 'visible'); 
}; 

jQuery.fn.invisible = function() { 
    return this.css('visibility', 'hidden'); 
}; 

jQuery.fn.visibilityToggle = function() { 
    return this.css('visibility', function(i, visibility) { 
     return (visibility == 'visible') ? 'hidden' : 'visible'; 
    }); 
}; 

आप मूल jQuery toggle(), जो मैं सलाह नहीं देते ओवरलोड करना चाहते हैं ...

!(function($) { 
    var toggle = $.fn.toggle; 
    $.fn.toggle = function() { 
     var args = $.makeArray(arguments), 
      lastArg = args.pop(); 

     if (lastArg == 'visibility') { 
      return this.visibilityToggle(); 
     } 

     return toggle.apply(this, arguments); 
    }; 
})(jQuery); 

jsFiddle

+1

एलेक्स, धन्यवाद। क्या आप इसके बजाए '.toggle() 'फ़ंक्शन का उपयोग कर सकते हैं? – TMS

+0

@ टॉमस आपको 'टॉगल()' छाया करना होगा जो अन्य स्क्रिप्ट को तोड़ सकता है। यदि आप चाहते थे, तो आप 'टॉगल()' में एक अतिरिक्त तर्क जोड़ सकते हैं ताकि यह निर्दिष्ट किया जा सके कि 'दृश्यता' या' प्रदर्शन' को टॉगल किया जाना चाहिए या नहीं।हालांकि, मैं अपने पिछले उदाहरण में कस्टम एक का उपयोग करता हूं। :) – alex

+0

क्या आप 'शो' (गति, आसान, कॉलबैक) के अतिरिक्त पैरामीटर का समर्थन करने के तरीके पर एक उदाहरण पोस्ट कर सकते हैं? – georg

89

वहाँ में बनाया गया एक नहीं है, लेकिन आप अपने खुद के काफी आसानी से लिख सकते हैं:

(function($) { 
    $.fn.invisible = function() { 
     return this.each(function() { 
      $(this).css("visibility", "hidden"); 
     }); 
    }; 
    $.fn.visible = function() { 
     return this.each(function() { 
      $(this).css("visibility", "visible"); 
     }); 
    }; 
}(jQuery)); 

फिर आप तो इस तरह कॉल कर सकते हैं:

$("#someElem").invisible(); 
$("#someOther").visible(); 

यहाँ एक working example है।

+16

+1 आपको '.each' की आवश्यकता नहीं है: http://jsfiddle.net/nGhjQ/2/। – pimvdb

+1

अच्छा बिंदु, बस आदत का एक बल। धन्यवाद। एलेक्स के जवाब में +1! –

+0

बस उत्सुक, '(फ़ंक्शन ($) {...} (jQuery)) में इन दो कार्यों को लपेटने में क्या बात है; 'रैपर? मैंने पहले कभी भी jQuery में अपने कार्यों को परिभाषित नहीं किया है, मैंने हमेशा सीधे जावास्क्रिप्ट में फ़ंक्शंस को परिभाषित किया है। – VoidKing

19

यदि आपको केवल दृश्यता के साथ छिपाने की मानक कार्यक्षमता की आवश्यकता है: वर्तमान लेआउट को रखने के लिए छुपाएं आप टैग में सीएसएस को बदलने के लिए छुपा के कॉलबैक फ़ंक्शन का उपयोग कर सकते हैं। Hide docs in jquery

एक उदाहरण:

$('#subs_selection_box').fadeOut('slow', function() { 
     $(this).css({"visibility":"hidden"}); 
     $(this).css({"display":"block"}); 
}); 

इस div को छिपाने के लिए सामान्य शांत एनीमेशन का उपयोग होगा, लेकिन एनीमेशन खत्म करने के बाद आप छिपा के लिए दृश्यता सेट और ब्लॉक करने के लिए प्रदर्शित करते हैं।

एक उदाहरण:। http://jsfiddle.net/bTkKG/1/

मुझे पता है तुम फ्लॉप चाहते $ ("# आ") सीएसएस() समाधान, लेकिन अगर यह था आप निर्दिष्ट नहीं किया है, क्योंकि केवल सीएसएस का उपयोग कर() विधि तुम हार एनीमेशन।

48

यह करने के लिए एक और भी आसान तरीका jQuery के toggleClass() विधि

सीएसएस

.newClass{visibility: hidden} 

एचटीएमएल

<a href="#" class=trigger>Trigger Element </a> 
<div class="hidden_element">Some Content</div> 

जे एस

$(document).ready(function(){ 
    $(".trigger").click(function(){ 
     $(".hidden_element").toggleClass("newClass"); 
    }); 
}); 
+1

मुझे यह दृष्टिकोण पसंद है। यह कम आत्मनिर्भर है क्योंकि इसे अलग स्टाइलशीट की आवश्यकता होती है, लेकिन यह स्टाइलशीट में सभी स्टाइल की जानकारी रखने में मदद करता है, जहां यह होना चाहिए। यदि आप दृश्यता को अक्षम करना चाहते हैं तो आप अपने सभी जेएस कोड को बदलने के बजाय एक स्थान पर एक सीएसएस टैग बदल सकते हैं। – vaughan

+17

बूटस्ट्रैप का उपयोग करने वालों के लिए, इस वर्ग को अदृश्य कहा जाता है। – user239558

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