3

尝试选择作为具有特定 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")似乎没有选择任何东西。

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

4

5 回答 5

10

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

编辑:额外信息

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

于 2009-04-23T19:09:48.107 回答
7

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

$("a:link", this).

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

于 2009-04-23T19:16:23.597 回答
1

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

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

于 2009-04-23T19:21:58.700 回答
0

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

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

于 2009-04-23T19:24:16.980 回答
0

使用 .each() 遍历 div,并使用子选择器:

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

像这样。

于 2009-04-23T19:30:32.143 回答