2009-09-22 52 views
2

我试图附加点击功能,增加了一个CSS类所有锚标记特定div中。不知何故,我不能让jQuery来做到这一点(也没有JS错误)。jQuery选择问题(内DIV以外所有儿童)

股利:

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

我的jQuery代码($(文件内)。就绪):

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

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

帮助?

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

回答

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

对我没有意义。如果上述不起作用。现在只有选择了ANCHORS的变化是**不是**后代,而是任何后代。 **。点击**只是** bind('click',func)**的简写,如果你仔细查看jQuery源代码。 – 2009-09-22 18:44:17

+0

通过将点击事件附加到不需要的锚标记可能会导致无法预料的问题。不知道你的标记的其余部分,确保没有其他的“更好”的锚标记不需要附加点击事件 – 2009-09-22 18:45:16

+0

这工作 - 我原来的代码没有。不知道为什么或有什么不同。 – Alex 2009-09-22 18:45:26

0

警报为我工作。但是,如果您重定向到新页面,为什么要添加一个类?

+0

重定向后类将无所谓。如果你不想按照链接尝试:返回false; – 2009-09-22 18:41:58

0

两个猜测:

  1. 你也许有id="better"你的页面上的其他元素? ID应该是全球唯一的,所以选择器只会返回其中的一个。

  2. 尝试使你的点击函数返回false,让用户从下面的链接。 (觉得奇怪,加个班,当用户离开页面,除非可能链接在新窗口中打开。)

0

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

用Firebug,你可以使用的console.log()写出来,希望JavaScript控制台,以确保选择实际上是返回的元素。例如:执行console.log($(“#更好> a”)的长度。)

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; 
});