2011-05-17 131 views
1

我使用原型1.5。你能告訴我,我怎麼能隱藏/顯示具有相同名稱或類的div標籤。隱藏多個具有相同名稱或類別的標記

Element.hide('indicate') 

但是,上面的行只能滿足只隱藏第一個元素。 「表示」是id。

+1

ID必須是唯一的! – DanielB 2011-05-17 10:50:04

+0

是的,我知道。好吧告訴我,如何隱藏標籤名稱或類別。 – 2011-05-17 10:51:21

回答

2

HTML中不支持兩個元素具有相同的id,所以JavaScript中沒有方法來處理它。不管你使用什麼框架。

+0

hi @LHMathies,我修改了這個問題。請告訴解決方案。 – 2011-05-17 10:53:56

+0

謝謝。但我看到很多人已經給出了有效的答案。 – LHMathies 2011-05-17 11:16:43

0

ID必須是唯一的。改爲選擇類。

$$('div.indicate').hide(); 

或與它的名稱屬性

$$('div[name=indicate]').hide(); 
+0

這不起作用。 – 2011-05-17 11:06:39

+1

使用clockworkgeek的每種方法。 – DanielB 2011-05-17 11:09:42

+0

感謝您的建議。函數式編程FTW! – clockworkgeek 2011-05-17 11:13:04

1

原型提供了$$()功能,你可以用它來查詢任何CSS選擇器。

所以,如果你有一個類多個項目,您可以查詢他們是這樣的:

$$('.indicate'); 

見原型手冊:http://www.prototypejs.org/api/utility/dollar-dollar

順便說一句,因爲你使用原型1.5 ,我也可以提到它也給你一個.getElementsByClassName()函數。然而,由於其功能已被$$()所涵蓋,並且爲了避免混淆,因爲現代瀏覽器實現具有相同名稱但語法不同的本機功能,所以現在已經在較新版本中棄用了它。

所以不要使用它,但爲了完整起見,這裏是手動鏈接:http://www.prototypejs.org/api/element/getElementsByClassName

+0

它不工作。我嘗試了「$$('。'''')。hide();」,注意到了。當試圖喜歡時,$$('.lind'),每個函數(obj){obj.hide();}。 } } 它顯示錯誤。 – 2011-05-17 11:08:02

+0

@Mr。黑色 - 我已經放棄了關於如何使用'hide'的答案,因爲我把Prototype和JQuery混淆了。我已經將手冊頁鏈接留在那裏,因爲它是一個有用的鏈接。看看其他答案,我會說@ clockworkgeek的答案看起來應該是好的。 – Spudley 2011-05-17 11:13:15

3

正如指出的那樣,需要對$$功能。它返回一個數組,所以你需要invoke隱藏所有項目。

$$('.indicate').invoke('hide'); 

或者,對於獎金炫耀點,則可以直接使用該功能的一個目的:

var hideFunc = Element.hide; 
$$('.indicate').each(hideFunc); 

該技術裝置的優點可以很容易地交換功能爲另一個,例如a Scriptaculous effect

hideFunc = Effect.SwitchOff; 
相關問題