2012-04-29 53 views
-2

我有一個id "#post0"爲什麼不傳遞jQuery處理ID和選擇器?

和一類"reply"

當我這樣做:

var rep = ".reply"; 
$(rep).toggle(400); 

帶班 「答覆」 切換所有組件。

然而,當我這樣做:

var rep = "#post0.reply"; 
$(rep).toggle(400); 

什麼也沒有發生與一流的答覆和post0元素...而不是切換他們

幫助表示讚賞!

+5

當這段代碼是什麼?標記實際上是什麼樣子?你爲什麼只提供片段而不是完整的最小測試用例? – Quentin 2012-04-29 09:56:53

+0

真的很抱歉!不知何故,我的其他描述被刪除。現在編輯..問題是,當我執行該代碼時沒有任何反應。 – algorithmicCoder 2012-04-29 11:57:07

回答

2

$("#post0.reply")返回具有編號爲post0和類別reply的元素。

$(".reply")返回具有類reply的元素。

$("#post0 .reply")返回嵌套在ID爲post0的元素下的類爲reply的元素。

0

下面的jsfiddle爲我工作:

http://jsfiddle.net/9V7v8/

當你說你的元素ID爲 「#post0」;實際上是在ID字段中的哈希?嘗試從ID字段中移除哈希值;所以:

<p id="#post0"... 

變爲:

<p id="post0"... 

保持前綴在JavaScript雖然ID的#;這告訴JQuery它正在尋找一個ID;所以選擇仍然應該是:

var rep = "#post0.reply"; 
3

獲得類 「答覆」

$(".reply") 

例子中的所有元素:

<span class="reply">match</span> 

回報具有ID 「post0」 的所有元素並有一個「答覆」類。請注意,選擇器之間不存在空格。一個元素,只有當他們都「鏈接」選擇

匹配
$("#post0.reply") 

例如:

<span id="post0" class="reply">match</span> 

回報有一個類「回覆」,也就是id爲元素的後代的所有元素「post0」 請注意,有在例如選擇之間

$("#post0 .reply") 

一個空格:

<div id="post0"> 
    <span class="reply">span match</span> 
</div> 
+0

問題是,當我執行該代碼沒有切換髮生。抱歉,我的初始描述被砍掉了!欣賞任何幫助,您可以提供調試 – algorithmicCoder 2012-04-29 11:59:27

+1

@algorithmicCoder嘗試'console.log($(「#post0.reply」))'看看它是否會返回您的目標。 – Joseph 2012-04-29 12:01:00