2009-09-22 51 views
2

我試圖附加點擊功能,增加了一個CSS類所有錨標記特定div中。不知何故,我不能讓jQuery來做到這一點(也沒有JS錯誤)。jQuery選擇問題(內DIV以外所有兒童)

股利:

<div id="better"> 
    <a href="1.aspx">One</a> 
    <a href="2.aspx">Two</a> 
    <a href="3.aspx">Three</a> 
</div> 

我的jQuery代碼($(文件內)。就緒):

$("#better > a").click(function() { $(this).addClass('active'); }); 

我在點擊功能,看是否添加了警報它會發生,但沒有任何反應。正如我上面寫的,我也沒有在FF錯誤控制檯中得到JavaScript錯誤。

幫助?

編輯:這只是示例代碼。是的,當你重定向時改變一個類是沒有意義的。我剛剛將我的代碼簡化爲我正在嘗試做的核心。 :)

回答

3
$("#better a").bind('click', function() { $(this).addClass('active'); }); 
+1

對我沒有意義。如果上述不起作用。現在只有選擇了ANCHORS的變化是**不是**後代,而是任何後代。 **。點擊**只是** bind('click',func)**的簡寫,如果你仔細查看jQuery源代碼。 – 2009-09-22 18:44:17

+0

通過將點擊事件附加到不需要的錨標記可能會導致無法預料的問題。不知道你的標記的其餘部分,確保沒有其他的「更好」的錨標記不需要附加點擊事件 – 2009-09-22 18:45:16

+0

這工作 - 我原來的代碼沒有。不知道爲什麼或有什麼不同。 – Alex 2009-09-22 18:45:26

0

警報爲我工作。但是,如果您重定向到新頁面,爲什麼要添加一個類?

+0

重定向後類將無所謂。如果你不想按照鏈接嘗試:返回false; – 2009-09-22 18:41:58

0

兩個猜測:

  1. 你也許有id="better"你的頁面上的其他元素? ID應該是全球唯一的,所以選擇器只會返回其中的一個。

  2. 嘗試使你的點擊函數返回false,讓用戶從下面的鏈接。 (覺得奇怪,加個班,當用戶離開頁面,除非可能鏈接在新窗口中打開。)

0

嘗試運行在頁面右側的結束標記之前底部的代碼或在$(document).ready()函數中。

用Firebug,你可以使用的console.log()寫出來,希望JavaScript控制檯,以確保選擇實際上是返回的元素。例如:執行console.log($(「#更好> a」)的長度。)

1

如果我理解你的要求..你想這結束了?

<div id="better"> 
    <a href="1.aspx" class="active">One</a> 
    <a href="2.aspx" class="active">Two</a> 
    <a href="3.aspx" class="active">Three</a> 
</div> 

如果該div中的任何鏈接被點擊了,對不對? (你確實說過所有的錨定標籤)...然後使用這個:

$("#better").click(function() { 
$(this).find('a').addClass('active'); 
return false; 
});