判断li里面的“a”元素是否有一个带有jquery的CSS类

时间:2013-01-26 05:20:06

标签: javascript jquery nav

我想根据 li元素中的 a 元素和 li元素中的子菜单类执行某些操作。 如果元素有2个classess current submenu我想在 $(“。menu”)。mouseenter 事件发生时执行某些操作。如果li元素不具备此功能......

    <nav id="id"> 
    <ul>
        <li><a href="index.html">index</a></li>
        <li><a href="serviceios.html" class="current submenu">Services</a></li>
        <li><a href="clients.html" >Clients</a></li>
        <li><a href="portfolio.html">Portfolio</a></li>
        <li><a href="contact.html" >Contact</a></li>
        <ul class="menu">
            <li><a href="#" class="documents" data-icon="&#xe000">1</a></li>

            <li><a href="#" class="messages" data-icon="&#xe001">2</a></li>

            <li><a href="#" class="signout" data-icon="&#xe002">3</a></li>
        </ul>
    </ul>
</nav>

我有:

$(".menu").mouseenter(
    function() {
        $(".menu").toggleClass('hover');
        $(".submenu").css("-webkit-border-radius", "8px 8px 0 0");
        $(".submenu").css("-moz-border-radius", "8px 8px 0 0");
        $(".submenu").css("border-radius", "8px 8px 0 0");
        if( $('li').hasClass('current submenu') )
            /*...*/
        else
            $(".submenu").toggleClass('current');
    }
);

该怎么办?

2 个答案:

答案 0 :(得分:3)

这个jQuery对象:

$("li a.current.submenu")

将选择包含这两个类的所有标记,并仅选择那些标记。您可以使用该jQuery对象将任何操作仅限于那些标记。

或者,如果你想迭代所有li a.submenu个项目,如果当前的类在那里做一件事,如果没有则做另一件事,你可以这样做:

$("li a.submenu").each(function() {
    if ($(this).hasClass("current")) {
        // do something here when current class is present
    } else {
        // do something here when current class is not present
    }
});

答案 1 :(得分:2)

您将class设置为a内的li元素,因此a将拥有该类。

使用它。这会在a内选择submenu currentli

if( $('li a.submenu').hasClass('current') ) {
    console.log("Got an li");
    /* Do stuff here */
} else {
    $(".submenu").toggleClass('current');
}

如果您确定一次只有一个submenu课程的元素,那么您也可以这样做:

if( $('.submenu').hasClass('current') ) {

Live Demo