JQuery kullanarak bir öğenin 'display: none' olup olmadığını kontrol edin veya tıklama ile engelleyin


239

Gizli öğeleri kontrol etmek ve sıralamak istiyorum. Nitelik displayve değere sahip tüm öğeleri bulmak mümkün müdür none?

Yanıtlar:


542

Sen kullanabilirsiniz : görünür görünür unsurları ve için : gizlenmiş gizli unsurları öğrenmek için. Bu gizli öğelerin displayözelliği ayarlanmış none.

hiddenElements = $(':hidden');
visibleElements = $(':visible');

Belirli bir elemanı kontrol etmek için.

if($('#yourID:visible').length == 0)
{

}

Öğeler belgedeki alanı tüketirlerse görünür kabul edilir. Görünür öğeler sıfırdan büyük bir genişliğe veya yüksekliğe sahiptir, Referans

Ayrıca () ile kullanabilirsiniz:visible

if(!$('#yourID').is(':visible'))
{

}

Ekranın değerini kontrol etmek istiyorsanız css () öğesini kullanabilirsiniz.

if($('#yourID').css('display') == 'none')
{

}

Ekran kullanıyorsanız aşağıdaki değerlere sahip displayolabilirsiniz.

görüntü yok

ekran: satır içi

Ekran bloğu

display: list-item

display: inline-block

Olası displaydeğerlerin tam listesini burada kontrol edin .

Display özelliğini JavaScript ile kontrol etmek için

var isVisible = document.getElementById("yourID").style.display == "block";
var isHidden = document.getElementById("yourID").style.display == "none"; 

benim senaryomda, her elemanın bir kimliği var, bu yüzden hile benim için çalışıyor :)
— Nicholas Francis

2
@NicholasFrancis, gizli tüm öğeleri bulmak için cevabımı güncelledim.
— Adil

Ayrıca satır içi css kontrol eder. Ben display: block;jquery gelen satır içi yazılı css var . Ben senin yöntemi ile kontrol edemiyorum. bana yardım et.
— Gaurav Manral

JQuery ekleniyor ve DOM'a eklendikten sonra öğeye erişiyor musunuz? Bana kodu gösterebilir misin? Jsfiddle.net'te
— Adil

JavaScript eşdeğeri nedir?
— TheBlackBenzKid

56
$("element").filter(function() { return $(this).css("display") == "none" });

7
+1: Bu, aslında bir üst öğe olsa bile çalışacağından, sorulan soru için kabul edilen cevaptan daha yararlıdır style="display: none;". Cevapları kullanarak :visibleve :hiddenbu seçiciler sayfasında genel görünürlük iade olarak belirli eleman görünürlük istiyorsanız başarısız olur ve bir ana öğe gizlenir (ki soru sordu değildi).
— Gitti Kodlama

Bu, JS DOM ortamında birleşik test çalıştırırken çalışır.
— b01

Bir sekme eklentisi için, visibility: 'hidden';css olarak ayarlanmıştı , bu yüzden kontrol de kontrol edildi:$(this).css('visibility') != 'hidden'
— phyatt

30

Evet, cssfunction işlevini kullanabilirsiniz. Aşağıda tüm div'ler aranacak, ancak ihtiyacınız olan öğeler için değiştirebilirsiniz

$('div').each(function(){

    if ( $(this).css('display') == 'none')
    {
       //do something
    }
});

13

Bu koşulu kullanın:

if (jQuery(".profile-page-cont").css('display') == 'block'){
    // Condition 
}

11

JQuery'de görünürlüğü kontrol etmek için iki yöntem vardır:

$("#selector").is(":visible")

ve

$("#selector").is(":hidden")

Seçicideki görünürlüğe dayalı komutları da yürütebilirsiniz;

$("#selector:visible").hide()

veya

$("#selector:hidden").show()

6
Not: Bu olacak değil soru sorar gibi, seçilen elemanların belirli görünür nitelik döndürmek :visibleda ebeveyn atası görünürlüğü bağlıdır. Eğer bir ata display: nonetüm torunları ise displaydurum ne olursa olsun görünmez .
— Gitti Kodlama

10
$('#selector').is(':visible');

3
Not: Bu olacak değil soru sorar gibi, seçilen elemanların belirli görünür nitelik döndürmek :visibleda ebeveyn atası görünürlüğü bağlıdır. Eğer bir ata display: nonetüm torunları ise displaydurum ne olursa olsun görünmez .
— Gitti Kodlama
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.