javascript - Element.className 返回未定义?

标签 javascript jquery html css

[在向我指出替代调试方法后问题发生了变化,我找到了问题的真正原因 - 感谢 Pointy 和 user2864740]

我正在尝试模拟(在查看源代码之前)bootstrap 的下拉菜单。

我将一个 onclick 监听器附加到每个 a.dropdown-toggle。监听器获取节点的父节点,使用节点的父节点找到实际的下拉菜单并添加或删除打开的类。

获得下拉菜单节点(一个 ul 元素)后,我使用 element.className 但它返回未定义。 这特别奇怪,因为 jquery 的 .attr('class') 返回了预期的结果。

我正在使用 jquery 1.10.2。

HTML:

<li class="dropdown">
    <a href="#" class="dropdown-toggle" data-toggle="dropdown">Account <b class="caret"></b></a>
    <ul class="dropdown-menu open">
        <li><a href="#">Profile</a></li>
        <li><a href="#">Settings</a></li>
        <li><a href="#">Privacy</a></li>
        <li class="divider"></li>
        <li><a href="#">Logout</a></li>
    </ul>
</li>

CSS:

li.divider {
    border-top: solid 1px grey;
    padding: 0px 0px;
}

.dropdown-menu {
  position: absolute;
  display: none;
  border: 1px solid grey;
  list-style-type: none;
}

.dropdown a:link, .dropdown a:visited {
    text-decoration: none;
    color: black;
}

.dropdown-menu.open{
    display: block;
}

Javascript:

$( document ).ready(function(){

    $('a.dropdown-toggle').click(function(e){

        e.preventDefault();

        dropDownMenu = $(this.parentNode).find('.dropdown-menu'); // does not return dropdown menu

        console.log( "According to jquery, class name is: " + dropDownMenu.attr('class') ); // prints dropdown-menu
        console.log( "According to .className, class name is: " + dropDownMenu.className ); //prints undefined

        if ( dropDownMenu.attr('class').indexOf('open') > -1 ) { // previously dropDownMenu.className.indexOf('open') > -1
            alert('removing class');
        }else{
            alert('adding class');
        }

    });

});

最佳答案

dropDownMenu.attr('class');

dropDownMenu 现在是一个 jquery 对象 - 而不是 DOM 对象。

关于javascript - Element.className 返回未定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23841066/

相关文章:

javascript - 表单重新加载页面,提交时不发送数据

javascript - 轮播动画事件问题

jquery - 如何在Query中模拟点击 Action

php - 数据库登录失败,Mysql、html、php

javascript - 尝试进行电子邮件验证,但未按预期工作

javascript - PHP Javascript 动态选择框

javascript - 如何使用 AngularJS 的 $http 将文件发送到 PHP 脚本

javascript - 从中心动画/显示内容

jquery - 如何使用 jquery 设置 <div> 来切换它自己的大小

javascript - 无法从 Json 文件加载数据