2012-02-01 39 views
0

我有此代碼來檢查跨度是隱藏還是可見,取決於它將顯示或隱藏的值,當用戶單擊時觸發該事件一個按鈕:隱藏窗體取決於它的可見與否:可見檢查不起作用

$('form').on('click', '#agregar', function(){ 
// var p = $('#panel'); 
//var a = $('#agregar'); 
if($('#panel').is(':visible')){ 
    $('#panel').hide(); 
    $('#agregar').val('Mostrar Forma'); 
    alert('ocultar'); 
}else { 
    //if($('#panel').is(':hidden')){ 
    $('#panel').show(); 
    $('#agregar').val('Ocultar Forma'); 
    alert('mostrar'); 
} 
}); 

的問題是,即使其可見它永遠不會隱藏它和警報(「mostrar」)將始終顯示這樣的條件總是假的,這是爲什麼?我的代碼錯了?我的跨度是這樣的:

<span id="panel>a fieldset and a form here</span> 

的CSS是在外部樣式表,它就像

#panel{ display: none;} 

任何幫助是極大apreciated不介意真實評論,我只是嘗試不同形式的任何代碼看不到任何變化

回答

1

嘗試這樣做 如果($( 「#面板」)。CSS( 「顯示」)!= 「無」)

+1

工作就像一個魅力,你知道爲什麼:可見性不工作正確嗎? – 2012-02-01 23:03:14

+3

如果您詢問特定元素是否已設置爲不可見(通過顯示或可見性CSS樣式),則可見選擇器正常工作。 但是,如果由於父元素設置爲隱藏而隱藏元素,則:visible選擇器會返回誤報。 – 2012-02-01 23:04:58

+0

做了替代工作嗎? – 2012-02-01 23:29:07

0

試試這個擴展,看看是否可以幫助你。

jQuery.extend(
    jQuery.expr[ ":" ], 
    { reallyvisible : function (a) { return !(jQuery(a).is(':hidden') || jQuery(a).parents(':hidden').length); }} 
);