JQuery olarak, orada .hide()
ve .show()
CSS ayarlar yöntemleri display: none
ayarı.
visibility: hidden
Ayarı yapacak eşdeğer bir işlev var mı ?
Kullanabileceğimi biliyorum .css()
ama böyle bir işlevi tercih ediyorum .hide()
. Teşekkürler.
JQuery olarak, orada .hide()
ve .show()
CSS ayarlar yöntemleri display: none
ayarı.
visibility: hidden
Ayarı yapacak eşdeğer bir işlev var mı ?
Kullanabileceğimi biliyorum .css()
ama böyle bir işlevi tercih ediyorum .hide()
. Teşekkürler.
Yanıtlar:
Kendi eklentilerinizi yapabilirsiniz.
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';
});
};
Önermediğim orijinal jQuery'yi aşırı yüklemek istiyorsanız 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 .
toggle()
Diğer komut dosyalarını bozabilecek gölgeleme yapmanız gerekir . Eğer isteseydin, ekstra argüman ekleyebilir toggle()
belirtmek için visibility
veya display
toggled edilmelidir. Ancak son örneğimde özel olanı kullanardım. :)
show
(hız, hareket hızı, geri arama) nasıl destekleneceğine ilişkin bir örnek gönderebilir misiniz ?
Yerleşik bir tane yok ama kendinizinkini kolayca yazabilirsiniz:
(function($) {
$.fn.invisible = function() {
return this.each(function() {
$(this).css("visibility", "hidden");
});
};
$.fn.visible = function() {
return this.each(function() {
$(this).css("visibility", "visible");
});
};
}(jQuery));
Daha sonra bunu şöyle çağırabilirsiniz:
$("#someElem").invisible();
$("#someOther").visible();
İşte çalışan bir örnek .
(function($) {...}(jQuery));
sargıya sarmanın anlamı nedir? Daha önce hiç jQuery kendi fonksiyonları tanımlamak, ben her zaman sadece düz JavaScript fonksiyonları tanımladı.
$
Üst kapsamdaki başka bir şeye atıfta bulunsa bile , tanımlayıcıyı işlevin içinde kullanmanıza olanak tanır .
Bunu yapmanın daha basit bir yolu, jQuery'nin toggleClass () yöntemini kullanmaktır
CSS
.newClass{visibility: hidden}
HTML
<a href="#" class=trigger>Trigger Element </a>
<div class="hidden_element">Some Content</div>
JS
$(document).ready(function(){
$(".trigger").click(function(){
$(".hidden_element").toggleClass("newClass");
});
});
Gizlemenin yalnızca işlevselliği ile yalnızca standart işlevselliğe ihtiyacınız varsa: gizli, geçerli düzeni korumak için etiketteki css değerini değiştirmek için hide'ın geri arama işlevini kullanabilirsiniz. Jquery'deki dokümanları gizle
Bir örnek :
$('#subs_selection_box').fadeOut('slow', function() {
$(this).css({"visibility":"hidden"});
$(this).css({"display":"block"});
});
Bu, div'ı gizlemek için normal harika animasyonu kullanır, ancak animasyon bittikten sonra görünürlüğü gizli olarak ve engellenecek şekilde ayarlarsınız.
Bir örnek: http://jsfiddle.net/bTkKG/1/
$ ("# Aa"). Css () çözüm istemediğini biliyorum, ama sadece css () yöntemini kullanarak animasyonu kaybettiğiniz için olup olmadığını belirtmediniz.
İşte bir uygulama, neye benzeyen $.prop(name[,value])
veya $.attr(name[,value])
işlev gören. Eğer b
değişken doldurulur, görüş buna göre ayarlanır ve this
aksi takdirde görüş değerini verir, (diğer özellikleri ile devam etmesine izin) döndürülür.
jQuery.fn.visible = function (b) {
if(b === undefined)
return this.css('visibility')=="visible";
else {
this.css('visibility', b? 'visible' : 'hidden');
return this;
}
}
Misal:
$("#result").visible(true).on('click',someFunction);
if($("#result").visible())
do_something;
JQuery hide () / show () için saf JS eşdeğeri:
function hide(el) {
el.style.visibility = 'hidden';
return el;
}
function show(el) {
el.style.visibility = 'visible';
return el;
}
hide(document.querySelector(".test"));
// hide($('.test')[0]) // usage with jQuery
Biz akıcı arayüzü "tasarım deseni" return el
karşılamak için kullanın .
İşte çalışan örnek .
Aşağıda ben de muhtemelen daha "soruya yakın" cevap olan ÇOK tavsiye edilmeyen alternatif sağlar:
HTMLElement.prototype.hide = function() {
this.style.visibility = 'hidden';
return this;
}
HTMLElement.prototype.show = function() {
this.style.visibility = 'visible';
return this;
}
document.querySelector(".test1").hide();
// $('.test1')[0].hide(); // usage with jQuery
Tabii ki bu, jQuery 'each' ( @JamesAllardice cevabında verilen) uygulamıyor çünkü burada saf js kullanıyoruz.
Çalışma örneği burada .
.toggle()