2009-04-23 153 views
3

試圖選擇具有特定ID的div的後代的錨標記,假設它是#mydiv1,#mydiv2#mydiv3jQuery選擇器

myFunction = function() {  
    var theDivs = $("#mydiv1, #mydiv2, #mydiv3");  
    theDivs.hover(function(e){  
     $(this+" a:link").css("color","#99ccff"); 
    },function(e){ 
     $(this+" a:link").css("color","#848484");   
    });  
} 

的選擇$(this+" a:link")似乎並不雖然要選擇什麼。

有沒有人對這個選擇的正確語法有任何想法?

+0

所以你想要的是改變鏈接的顏色類? – TStamper 2009-04-23 19:13:22

回答

7

你可以給上下文中的元素,下面應該工作:

$("a:link", this). 

它將在this節點開始錨搜索。

+2

是的,這可能會更好。 :) – Paul 2009-04-23 19:21:43

10

嘗試$(this).find("a:link")

編輯:額外的信息

當你$(this + "query")你混合類型。 jQuery的選擇器參數正在查找查詢字符串或對象。當'this'被轉換爲字符串時,它不會是有效的選擇器語法。例如,您可以做這樣的事情: $("." + this.className + "[query]")

0

上述任何一種方法應該可行,但我沒有看到大約jQuery選擇語法什麼「:鏈接」是有效的語法。如果上述方法不適合你,也許試試把它關掉。

而你原來的方法不起作用的原因是「this」是一個DOM元素,而不是你的代碼中的字符串。如前所述,您可以通過執行「$(this)」來使其成爲jQuery對象,或者僅使用DOM元素作爲搜索上下文。

0

重複的進行。每()的div,並使用子選擇:

myFunction = function() {  
     var theDivs = $("#mydiv1, #mydiv2, #mydiv3");  
    theDivs.each(function(){  
     $(this > 'a').css("color","#99ccff"); 
    });  
} 

像現在這樣。