2011-01-20 244 views
0

昨天晚上我發現了jQuery,它看起來非常好!我使用它來顯示/隱藏div ID,點擊作爲觸發器來顯示最初隱藏在頁面上的div ID。這工作得很好,我很自豪:-)jQuery隱藏/顯示

但是,我有一個問題:點擊一個觸發器後,我希望它成爲隱藏。 所以我嘗試添加一行來隱藏觸發器onclick,但不僅如此,現在最初隱藏的div顯示在我加載頁面時。

這就是我最初嘗試:

$(document).ready(function() { 
$(‘#showhidetarget’).hide(); 

$(‘a#showhidetrigger’).click(function() { 
$(‘#showhidetarget’).show(200); 
**$(‘a#showhidetrigger’).hide();** 
}); 
}); 

現在有人建議,或許我不能隱藏的觸發器,因爲它是一個內聯元素(我不知道任何事情)。他建議把觸發器放在另一個div ID本身,這是有道理的。所以定義一個名爲「hideafterclick」,其中包含了一個觸發ID的其他DIV後,這是代碼的樣子:

$(document).ready(function() { 
$(‘#showhidetarget’).hide(); 

$(‘a#showhidetrigger’).click(function() { 
$(‘#showhidetarget’).show(200); 
**$(‘#hideafterclick’).hide();** 

但與同樣遺憾結果:初始部分(觸發)不隱藏,而應該隱藏的div立即可見onload,而它應該被隱藏。當我刪除包含.hide的粗體行時,該過程完美地工作。

關於我在做什麼的任何建議是錯誤的?或者如何解決這個問題? 只需完成:「部分」(div)包含代碼和超鏈接。其實點擊第一部分(觸發器)啓動一個新窗口並顯示第二部分,這工作正常。只是第一部分(觸發器)隨後必須隱形...

誰能幫助我?

我應該使用除div外的其他東西嗎?

預先感謝你的智慧和幫助,

托馬斯(比利時)


親愛Shikiryu,親愛的DavidYell,

感謝您jsFiddles很多:我不知道關於jsFiddle,但它是驚人的,如此完整,如此清晰而又如此簡單!
有時候,幸福可以在一個看似不重要的小細節中找到。因爲在最後,我所做的就是做一個小的修改...
我有什麼最初寫在包含在href的觸發部分,是這樣的:

<a id="showhidetrigger" href="HYPERLINK"> blabla</a> 

並可根據您的例子,我最終改變了標籤的ID的位置,所以就成了:

<a href="HYPERLINK" id="showhidetrigger">blabla</a> 

不要問我爲什麼,我仍然不知道有什麼區別究竟,但現在它像一個魅力,這就是重要的!當然,HYPERLINK這個部分在我的情況下很長,它屬於一個CFOutput,有很多標籤和查詢,它包含另一個javascript來打開彈出窗口中的鏈接等等......所以也許這就是第一個出錯的地方地點。

我很高興,感謝您的協助!

感激你的,

托馬斯


大家好, 非常感謝你的答案爲止! 關於撇號:我使用了通用的'ones'好吧,似乎從郵件窗口複製它時,他們改變了,但它們在代碼本身中是正常的,所以問題不存在。 關於**星號:我只是簡單地把它們放在指向哪裏出錯的部分。對不起,如果這造成了混淆,我已經明白**會使這一行大膽,我的錯誤。但無論如何,代碼本身沒有星號。 只要我不添加最後一行,它就完美地工作:onclick觸發器的href打開(在新窗口中,使用JavaScript),並且(最初隱藏的)目標div變爲可見。但是,當我試圖隱藏一個觸發器時,目標div在onload上可見,並且一個觸發器不被隱藏onclick。所以然後我綁在另一個div id圍繞包含觸發器的代碼,但結果相同。

親愛的Davidyell,謝謝你的建議。我會試着看看它是否有效,我會讓你知道。我正在處理的頁面非常複雜,在ColdFusion中(我不知道ColdFusion),觸發器,帶有javascript彈出窗口的href等......都在CF輸出中。我希望我能看到「森林裏的樹木」(自由翻譯佛蘭德語的諺語:-)

我會告訴你!

親切的問候,

托馬斯(比利時)

+0

你能顯示HTML代碼片段嗎? – Chris 2011-01-20 09:20:06

回答

0

如果你遇到這樣的問題,用Firebug火狐和,如果你有任何Javascript錯誤,它通常會指出你在正確的方向。嘗試執行此操作以查看它顯示的錯誤。

您還在使用而不是'",這可能會影響網頁的解析。

您還好奇地看到最後一行以**開頭和結尾。這可能會導致錯誤。

0

首先,忘記什麼有人告訴過你。您可以隱藏內聯和塊組件。

然後,你不應該使用這些怪異,使用'"

Here's a demo

0
$('#triggerDiv').click(function() { 
    $(this).hide(); 
    $('#hiddenDiv').show(200); 
}); 

使用撇號,而不是引號。