jQuery选择器

时间:2009-04-23 19:07:31

标签: jquery css-selectors

尝试选择具有特定ID的div的后代的锚标记,例如#mydiv1#mydiv2#mydiv3

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")似乎没有选择任何东西。

是否有人对此选择的正确语法有任何想法?

5 个答案:

答案 0 :(得分:10)

尝试$(this).find("a:link")

编辑:额外信息

当你$(this + "query")混合类型时。 jQuery的选择器参数正在寻找查询字符串或对象。当'this'转换为字符串时,它不会是有效的选择器语法。例如,您可以执行以下操作: $("." + this.className + "[query]")

答案 1 :(得分:7)

您可以为上下文提供元素,以下内容应该有效:

$("a:link", this).

它将搜索从this节点开始的锚点。

答案 2 :(得分:1)

或尝试$(this).children("a:link")

http://api.jquery.com/children/

答案 3 :(得分:0)

上述任何一种方法都应该有效,但我没有在jQuery选择器语法中看到任何关于“:link”是有效语法的内容。如果以上方法对你不起作用,也许可以尝试将其关闭。

原始方法不起作用的原因是“this”是一个DOM元素,而不是代码中的字符串。如前所述,您可以通过执行“$(this)”将其设为jQuery对象,或者只使用DOM元素作为搜索上下文。

答案 4 :(得分:0)

使用.each()迭代div,并使用子选择器:

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

喜欢这样。