Boole ile öğeyi gizle / göster


109

Kodumda bunlardan çok var olma eğilimindeyim

if(shouldElementBeVisible)
    $element.show()
else
    $element.hide()

Javascript, jquery veya alt çizgi ile paketlenmiş daha zarif bir yol var mı? İdeal olarak böyle görünen bir şey istiyorum

$element.showOrHideDependingOn(shouldElementBeVisible)


@SpencerWieczorek bu soru referans amaçlı oluyor toggle, ancak bu farklı bir soru
Aakil Fernandes

Yanıtlar:


166

Görünüşe göre toggleişleve sadece bir mantıksal değer verebilirsiniz

$element.toggle(shouldElementBeVisible)

34
Değişkenin bir boole değeri olduğundan emin değilseniz, yanlışlıkla diğer "aşırı yüklemelerden" birine$element.toggle(!!shouldElementBeVisible) çarpmayı önlemek için kullanmanızı öneririm .
Jeroen

8
Daha iyi bir seçenek olabilir $element.toggle(shouldElementBeVisible == true).
jox

"0"ve yine de "false"olduğundan çok farklı muamele falsegörüyorlar, bu yüzden ayrımın gerçekten önemli olduğunu düşünmüyorum - 0gizlenmesini istiyorsanız bile yanlış olur, çünkü tüm bu animasyon süreleri belirledi ama yine de görünürlüğü değiştirir.
Tasgall

19

Evet var!

$element.toggle();

Herhangi bir parametre olmadan, togglesadece öğelerin görünürlüğünü değiştirir ( visibilityözelliği kastetmiyorum ) ve öğenin mevcut durumuna bağlıdır.

$element.toggle(display);

toggleBir boole parametresiyle çağırırsanız , öğe öyleyse trueve hiddeneğer öyleyse gösterilirfalse

kaynak


2
Bunu yanlış işaretlemek üzereydim, sonra son API referansının bir options nesnesi yerine bir boole ayarlamanıza izin verdiğini fark ettim.
Aakil Fernandes

altında birkaç satır var: "Parametre olmadan, .toggle () yöntemi öğelerin görünürlüğünü değiştirir"
Zach Spencer

2
bu aslında istediğim şeyin tam tersi. Elementin mevcut durumunun alakasız olmasını istedim. Durum, bir boole değişkenine dayanmalıdır.
Aakil Fernandes

@AakilFernandes Yani değişken görünür olanla isShownalakalı $elementdeğil mi? Ancak öğeyle ilgili olmayan ayrı bir değişken?
Spencer Wieczorek

Evet, özür dilerim, muhtemelen daha açık hale getirmek için adını değiştirmem isShowngerekiyorshouldElementBeVisible
Aakil Fernandes


0

İşlev , öğenin değerini .toggle()değiştirir display.

Değiştirmek istiyorsanız visibility, bunun yerine ?:operatörü kullanmanızı öneririm . Bunun için, CSS'nizde görünürlüğü orijinal duruma ayarlayın ve JS'de basitçe şunu koyun:

    var checkboxChecked = $("#yourCheckbox").(":checked");

    $("#yourElement").css("visibility", checkboxChecked ? "visible" : "hidden");
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.