开发者问题收集

检查页面上是否存在某个元素,如果存在则执行函数,如果不存在则不执行任何操作

2018-07-31
308

场景如下:我有 2 组导航,主导航和辅助导航。主导航将始终存在于页面上,而辅助导航将不会始终存在。在包含辅助导航的页面上,我希望主导航仅在辅助导航附加了“词缀”类时(页面向下滚动到某个点后,但这是一段单独的代码)在 mouseenter 和 mouseleave 上执行某些操作。

我目前拥有的代码如下:

var navItem = $('.main-navigation');
var stickyNav = $('.tabbed-sticky-nav.affix');

if (stickyNav == null || stickyNav == 'undefined') {
    doNothing();
    return;
} else {
    navItem.mouseenter(function() {
        console.log("Hover");
    });
    navItem.mouseleave(function() {
        console.log("Out");
    });
}

function doNothing() {
    console.log("Object not found");
}

当我按原样运行此代码时,无论子导航是否在页面上,导航项始终都会触发代码。我可能应该首先检查页面上是否存在 .tabbed-sticky-nav,这样如果页面没有辅助导航,则不必费心检查悬停时的任何内容。但是,如果 .tabbed-sticky-nav 确实存在,并且添加了“词缀”类,那么我才希望主导航的悬停操作能够应用。我该如何更改,以便在这种情况下清晰地检查和执行?

1个回答

jQuery 总是会返回一些内容,因此检查元素是否存在的方法是使用 length 属性 。这将告诉您给定选择器返回了多少个元素。

if (!stickyNav.length){
    ...
}
sbrass
2018-07-31