jQuery选择器问题(Div内的所有孩子)

时间:2009-09-22 18:34:58

标签: jquery jquery-selectors

我正在尝试附加一个点击功能,该功能会将CSS类添加到特定div中的所有锚标记。不知怎的,我不能让jQuery这样做(也没有JS错误)。

div:

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

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

我的jQuery代码(在$(document).ready中):

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

我在点击功能中添加了一个警报,看它是否会触发,但没有任何反应。正如我上面所写,我也没有在FF错误控制台中获得JavaScript错误。

帮助?

编辑:这只是示例代码。是的,重定向更改类没有意义。我刚刚将代码简化为我正在尝试的核心。 :)

5 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分: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;
});

答案 2 :(得分:0)

警报对我有用。但是,如果要重定向到新页面,为什么还要添加一个类?

答案 3 :(得分:0)

两个猜测:

  1. 您的页面上是否有id="better"的其他元素? ID应该是全局唯一的,因此选择器只返回其中一个。

  2. 尝试使您的点击功能返回false,以防止用户关注该链接。 (在用户离开页面时添加课程似乎很奇怪,除非链接在新窗口中打开。)

答案 4 :(得分:0)

尝试在结束正文标记之前或$(文档).ready()函数中运行页面底部的代码。

使用Firebug,您可以使用console.log()写出到javascript控制台,以确保选择器实际返回元素。示例:console.log($(“#better&gt; a”)。length)