2013-01-19 22 views

回答

6

您可以使用.filter()

var displayed = $('mySelector').filter(function() { 
    var element = $(this); 

    if(element.css('display') == 'none') { 
     element.remove(); 
     return false; 
    } 

    return true; 
}); 

這將返回從你的選擇,多數民衆贊成所有元素屬性displaynone,並刪除那些誰的是。

+0

注意,這僅發現有一個明確的'顯示元素:none'在他們的'style'屬性。 '.css()'方法不會選取從樣式表繼承的樣式。 – Barmar

+0

是什麼讓你說這個?根據jQuery文檔,'.css()'是**計算的**樣式屬性,因此它包含了繼承樣式。這裏有一個演示,以證明這是真實的 - https://jsfiddle.net/6uncqqk2/ –

+1

我可以發誓我已經看到了過去沒有使用計算風格的問題。也許我正在考慮使用普通JS'element.style.display'的代碼。 – Barmar

2

您可以使用filter()

var listWithoutDisplayNone = elementList.filter(function(){ 
     if($(this).css('display') != 'none') 
      return $(this); 
}); 
8
$("selector").is(":visible") 

您還可以過濾掉原選擇隱藏要素:

$("selector:visible") 
+0

我目前正在使用這個元素,我在'display:none'和'display:block'之間切換;會有什麼問題或不一致的使用它爲此目的? – Abdul

+0

@Abdul這應該沒問題。 jQuery同時檢查'display'和'visibility'屬性以檢查元素是否可見。 – Barmar

+1

雖然這通常會實現目標,但有一個顯着的不同(除了它也檢查可見性,如@Barmar所述):它還將檢查父元素的可見性。所以如果你真的想用'display:none'來過濾掉元素,那麼':visible'會給出誤報。 – ScottSB

相關問題