SORU
29 EKİM 2013, Salı


Unsuru olmadığını kontrol DOM görünür

Eğer bir element, saf JS (jQuery) görünür olup olmadığını kontrol edebilirsiniz herhangi bir yolu var mı ?

Bu sayfa örneğin: Performance Bikes, Eğer Fiyatları (üst menüde) üzerine getirdiğinizde, fırsatlar penceresi görünür, ama başında gösterime girmedi. HTML ama görünür değil.

DOM öğesi göz önüne alındığında, ne olursa görünür olup olmadığını kontrol edebilir miyim? Denedim: window.getComputedStyle(my_element)['display']); ama çalışıyor gibi görünmüyor. Kontrol edeyim hangi nitelikleri merak ediyorum. Aklıma geliyor:

display !== 'none'
visibility !== 'hidden'

Eksik olabilir ki başka?

CEVAP
11 ŞUBAT 2014, Salı


O, ya da onun anne, display style özelliği ile gizli olduğunda this MDN documentation, bir elemanın offsetParent özelliğine göre null döndürecektir. Sadece element sabit olmadığından emin olun. Eğer 'position:fixed;' elemanları sayfanızda, şuna benzer: . eğer bu kontrol için bir komut dosyası

//Where el is the DOM element you'd like to test for visibility
function isHidden(el) {
    return (el.offsetParent === null)
}

Eğer, diğer taraftan,yapınbu arama yakalanmayın diye pozisyon sabit elemanları, ne yazık ki (ve yavaş) window.getComputedStyle() kullanmak zorunda olacak. Bu durumda işlevi olabilir:

//Where el is the DOM element you'd like to test for visibility
function isHidden(el) {
    var style = window.getComputedStyle(el);
    return (style.display === 'none')
}

Seçenek #2 muhtemelen biraz daha basit beri bu hesaplar için daha çok kenar durumlarda, ama eminim iyi bir anlaşma daha yavaş, çok, çok istiyorsanız tekrar bu işlemi birçok kez, en iyi için muhtemelen kaçının.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Jana Williams

    Jana William

    17 AĞUSTOS 2011
  • MagmaRhino

    MagmaRhino

    16 Temmuz 2011
  • TWiT Netcast Network

    TWiT Netcast

    27 EKİM 2005