检查菜单链接是否包含子菜单JavaScript

时间:2012-02-15 19:14:08

标签: javascript jquery menu toggleclass

我只是在点击的菜单链接有子菜单时尝试运行一些javascript(toggleClass)。这可能吗?在此先感谢您的帮助。

$('#nav a').click(function () {
    if (???) {
        $(this).toggleClass('sf-js-enabled');
    }
});

3 个答案:

答案 0 :(得分:1)

$('#nav a').click(function () {
    // Proceed only if children with your submenu class are present
    if ($(this).find('.submenuClass').length > 0) {
        $(this).toggleClass('sf-js-enabled');
    }
})

答案 1 :(得分:1)

使用has选择器:

$('#nav a:has(.submenu)').click(function () {
        $(this).toggleClass('sf-js-enabled');
    });

这样jQuery只会遍历DOM一次,而不是像每次点击一样遍历每次点击。

has docs

  

描述:选择包含至少一个与指定选择器匹配的元素的元素。

答案 2 :(得分:0)

试试这个。

$('#nav a').click(function () {
    if ($(this).find('submenuSelector').length) {
        $(this).toggleClass('sf-js-enabled');
    }
})

或者,您可以使用has(selector)方法将匹配元素集减少到具有与选择器或DOM元素匹配的后代的元素。

$('#nav a').click(function () {
    //Do other suff here

    if ($(this).has('submenuSelector').length) {
        $(this).toggleClass('sf-js-enabled');
    }
})