2

我想根据li 元素中的元素和li 元素的子菜单类执行一些操作。如果元素有 2 个类,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');
    }
);

该怎么办?

4

2 回答 2

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
    }
});
于 2013-01-26T05:28:16.703 回答
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') ) {

现场演示

于 2013-01-26T05:38:33.490 回答