代码之家  ›  专栏  ›  技术社区  ›  Alex

jquery选择器问题(DIV中的所有子级)

  •  2
  • Alex  · 技术社区  · 16 年前

    我正在尝试附加一个click函数,它将一个css类添加到 全部的 锚定特定分区内的标记。不知何故,我无法让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>
    

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

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

    我在click函数中添加了一个警报,以查看它是否触发,但什么也没有发生。正如我上面所写的,我也不会在FF错误控制台中得到JavaScript错误。

    帮助?

    编辑:这只是示例代码。 是的,在重定向时更改类是没有意义的。我只是把我的代码简化到我要做的事情的核心。:)

    5 回复  |  直到 16 年前
        1
  •  3
  •   staterium    16 年前
    $("#better a").bind('click', function() { $(this).addClass('active'); });
    
        2
  •  1
  •   Mottie    16 年前

    如果我理解你的要求……你想以这个结束吗?

    <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>
    

    如果单击了该分区中的任何链接,对吗?(你说了所有的锚标签)然后使用这个:

    $("#better").click(function() {
     $(this).find('a').addClass('active');
     return false;
    });
    
        3
  •  0
  •   Dmitri Farkov    16 年前

    提醒对我有效。但是,如果要重定向到新页面,为什么要添加类?

        4
  •  0
  •   Kip    16 年前

    两猜:

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

    2. 尝试使您的单击函数返回false,以防止用户跟踪链接。(在用户离开页面时添加类似乎很奇怪,除非链接在新窗口中打开。)

        5
  •  0
  •   Tim Banks    16 年前

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

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