2009-04-23 2 views
3

Пытается выбрать метки привязки, которые являются потомками div с определенным идентификатором, скажем, #mydiv1, #mydiv2 и #mydiv3. не кажется, выбрав что-нибудь, хотяjQuery selector

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

ответ

7

Вы можете дать элемент для контекста, следующие должны работать:

$("a:link", this). 

Он будет искать якорей, начиная с this узла.

+2

Да, это, наверное, лучше. :) – Paul

+0

Внутренне, предоставляя контекст, просто вызывает find() после куска кода проверки кода, что означает, что вызов find() напрямую (очень немного) быстрее. –

+0

Но, используя философию «Пишите меньше, делайте больше», я бы предпочел это по моему первому ответу. Я думаю, что использование find делает немного более ясным, что не так с OP, хотя. – Paul

10

Попробуйте $(this).find("a:link")

EDIT: дополнительная информация

Когда $(this + "query") вы смесительные типов. Параметр select jQuery ищет либо строку запроса, либо объект. Когда «this» преобразуется в строку, он не будет действительным синтаксисом селектора. Например, вы могли бы сделать что-то вроде этого: $("." + this.className + "[query]")

0

либо из перечисленных выше методов должны работать, но я не вижу ничего в селекторном синтаксисе JQuery о «: ссылке» быть действительным синтаксисом. Возможно, попробуйте также оставить это, если вышеупомянутые методы не сработают для вас.

И причина, по которой ваш оригинальный метод не работает, заключается в том, что «это» является элементом DOM, а не строкой в ​​вашем коде. Как уже упоминалось ранее, вы можете сделать его объектом jQuery, выполнив «$ (this)» или просто используя элемент DOM в качестве контекста поиска.

0

перебрать дивы с .each(), и использовать селектор ребенка:

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

Как и так.