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

JQuery选择器问题(我认为)

  •  0
  • Basic  · 技术社区  · 15 年前

    <script type="text/javascript">
        $(document).ready(function () {
            var ChildMenusFound = $(".menu_Child").hover(function () {
                //Mouse Over
                                alert('ok');
                $(this).toggleClass("menu_hover");
            }, function () {
                //Mouse Out
                                alert('ok');
                $(this).toggleClass("menu_hover");
            });
        });
    </Script>
    

    我输出的html如下:

    <ul alt="" class="menu_Root">
    <li class="menu_Child>"
    <a href="/Admin" alt="">Admin</a>
    <ul alt="" class="menu_Child">
    <li class="menu_SubMenu>"
    <a href="/Admin/Statistics" alt="">Statistics</a></li>
    <li class="menu_SubMenu>"
    <a href="/Admin/Database" alt="">Database</a></li>
    </ul></li>
    
    <li class="menu_Child>"
    <a href="/MyAccount" alt="">My Account</a>
    <ul alt="" class="menu_Child">
    <li class="menu_SubMenu>"
    <a href="/MyAccount/Profile" alt="">Profile</a></li>
    </ul></li>
    
    </ul>
    

    在调用hover()之后, ChildMenusFound

    有人能指认我的错误吗?

    4 回复  |  直到 15 年前
        1
  •  4
  •   Pointy    15 年前

    你的加价坏了。标签外面有引号。看起来你还缺了一个 </li> 第一个外星的地方 </li> 但很难说。

        2
  •  2
  •   Nick Craver    15 年前

    您的HTML有点不正常,您有未关闭(或错误关闭)的类,如下所示:

    <li class="menu_Child>"
                          ^ here
    

    应该是:

    <li class="menu_Child">
    

    Here's the fixed/working version ,但您可以精简代码,如下所示:

    $(function () {
      $(".menu_Child").hover(function () {
        $(this).toggleClass("menu_hover");
      });
    });
    

    只有一个回调传递给 .hover() 它在两个输入/输出方向都被调用,而且由于您正在切换,所以可以在这里保存代码。

        3
  •  1
  •   user113716    15 年前

    其他答案指出你的HTML标记损坏。

    要考虑的一件事可能是使用CSS而不是javascript来执行 hover . 它在IE6中不起作用,除非它在 <a> 元素,但它将在大多数其他浏览器中使用。

    .menu_Child {
       background: yellow;
    }
    
    .menu_Child:hover {
       background: orange;
    }
    

    <a> ,它也将在IE6中工作。

        4
  •  1
  •   Patrick Ferreira    15 年前

    小心,你已经颠倒了两个字符:

    <li class="menu_Child>"
    

    需要成为

    <li class="menu_Child">