2012-09-04 154 views
0

我試圖根據元素是否隱藏來調用某些函數。奇怪的是,類似的條件在兩個元素的相同代碼中工作正常,保存一個。JQuery將隱藏元素檢測爲可見和可見元素隱藏

我做這樣的事情:

  1. 點擊後鏈接,隱藏的鏈接並顯示備用鏈路
$('#link1').click(function() { 
     $('#alt_link1').show(); 
     $('#link1').hide(); 
     $('#link2').hide(); 
     $('#link3').show(); 
  1. 基於這樣的認識:鏈接隱藏,我做別的事
if ($("#link1").is(':hidden') && $("#link2").is(':hidden')) { 
    $('#link3').click(function() { 
    ..... } 
} 

現在已經點擊鏈接1,1和連接2應該被隱藏和LINK3應該是可見的,他們實際上是,我可以在Firebug看,但只是在一種情況下,JQuery的檢測隱藏要素在隱藏狀態下可見和可見。現在類似的情況在我有相同的代碼文件的兩種情況下工作得很好,但奇怪的是沒有其他的情況。

我試圖以許多不同的方式做到這一點無濟於事。我真的堅持這一點。

+0

而不是依靠:可見,我通過添加隱藏類隱藏並使用.hasClass –

+0

看到你想要達到什麼的例子將是寶貴的!因爲我認爲你走錯了路。 –

+0

從我的理解':可見'檢查'能見度'CSS屬性不''顯示'。當你淡入淡出時,你正在改變Display屬性而不是Visibility,因此你的結果。 –

回答

0

假設下面的序列,並假設只需點擊一下鼠標結合(點擊一次),你真的不應該被看到與你原來的代碼的問題:

$('#link1').one('click', function() { 
     $('#alt_link1').show(); 
     $('#link1').hide(); 
     $('#link2').hide(); 
     $('#link3').show(); 
if ($("#link1").is(':hidden') && $("#link2").is(':hidden')) { 
    $('#link3').one('click', function() { 
    ..... } 
} 
}); 
+0

是的@sajawikio,正如我所提到的條件工作正常,在同一個文件中的兩種情況下,只是不與一個案件,與他們的一切都是完全相同的,但。 – Humming

+0

最裏面的點擊功能會發生什麼? $('#link3')。one('click',function(){............. – sajawikio

+0

什麼都不能影響條件。它是一個非常長的代碼,我已經提取了什麼 – Humming

0

的,如果立即評估(REF您的評論如果鏈接1和鏈接2隱藏,則事件處理程序被附加,如果沒有附加鏈接3的事件處理程序的話。如果以後更改鏈接1和鏈接2的狀態不會影響第二個代碼段的結果,除非再次執行該代碼

+0

是的,link1和link2是隱藏的,因爲我可以從頁面源確認。我正在做同樣的事情,在同一個文件中有兩個其他鏈接,條件完全相似,它們工作正常。 – Humming

+0

您是否可以隱藏它們並不重要,但是在執行if時它們是否隱藏。你正在做一些稍微不同的事情(或者時機不同),否則它們會表現得一樣: –

+0

@Humming簡單地設置一個斷點,如果評估鏈接是否隱藏或當你達到行 –