2017-09-24 39 views
0

我希望構造一個函數,根據另一個div的可見性重新調整一個div的外觀(通過.is(「隱藏「)) - 而不引入其他變量。 當我使用.hide()而不是.hide(「slow」)時,這很有效。在後一種情況下,如果立即啓動,檢查會將其檢測爲可見。 例子:.is(「:hidden」)在.hide(「slow」)之後檢測到元素爲可見的

$('#1').hide("slow"); 

//... 

if($("#1").is(':hidden')) 
{ 
    //do something with #2 
} 

以上效果很好,如果我不使用 「慢」(或精確地:.hide())。有沒有辦法在不引入其他變量或添加超時的情況下將其關閉?

+0

請注意'#1'是無效的選擇器。它恰好在jQuery中工作,只要它是獨立的(然而,'#1> span' does not工作),因爲在這種情況下,jQuery不會將它用作選擇器(取而代之的是它關閉'#'並使用'getElementById'),但它在CSS中不起作用。最好使用有效的選擇器。雖然你*可以*開始一個數字(只是不是一個ID選擇器)的'ID',如果你不選擇它,則更容易。 –

回答

2

元素在淡出時仍然可見。您可以設置一個數據屬性來告訴自己它正在消失:

$("#1").hide("slow", function() { 
    $(this).removeData("hiding"); 
}).data("hiding", true); 

// ... 
var one = $("#1"); 
if (one.is(":hidden") || one.data("hiding")) { 
    // ... 
} 
+0

這看起來像有趣的解決方案,將在幾分鐘內嘗試它 –

+1

工程就像一個魅力。 –