javascript - JQuery hasClass - 为什么在这种情况下它总是返回 false?

标签 javascript jquery html

我有一个带有背景图像的跨度,我想在单击时在加号和减号的背景图像之间交替。我想添加和删除“打开”类来执行此操作。我的跨度看起来像这样......

<span class="expand open"></span>

我的 JQuery 看起来像这样......

$(function() {
    $('.expand').click(function() {
        if ($(this).hasClass('open')) {
            $(this).removeClass('open');
        } else {
            $(this).addClass('open');
        }
    });
});

我得到的行为是它会添加“打开”类,但在重复点击后不会再次删除它。登录到控制台显示我的 if 语句始终评估为 false。

我考虑过使用 toggleClass 但没有这样做,因为一旦它起作用,我打算使用相同的 if 语句来显示/隐藏内容 block 。

http://jsfiddle.net/Vz7YL/

编辑 由于人们关注我的 CSS,因此我也会提供它。 (SASS/SCSS):

.expand {
    background: url(/images/plus-minus-orange.gif) top center no-repeat;
    display: block;
    height: 21px;
    margin: 0 auto;
    width: 22px;
    &.open {
        background: url(/images/plus-minus-orange.gif) bottom center no-repeat;
    }
}

我还可以补充一点,跨度显示正确且可点击,我无法使用简化版本的代码重现问题。

最佳答案

你的 fiddle 对我来说很好用。只需在 span 中添加一些文本,这样您就可以实际点击 span

<span class="expand open">Some Text Here</span>

关于javascript - JQuery hasClass - 为什么在这种情况下它总是返回 false?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25075687/

相关文章:

javascript - Chromecast 定制 CAF 接收器

javascript - 如何在 JS 中创建一个开关比较器?

html - 问题让 child 在 Flex 容器中垂直填充

javascript - Kendo网格和Jquery复选框值

html - 如何获取选中的索引,在angularjs中点击图标

javascript - 格式错误的 HTML : How to NOT show a bullet on an empty li element

javascript - Array.every 函数并未在 Object 的所有元素上运行

javascript - 在 iOS 中是否存在用于退出 "select scroller"接口(interface)的 vendor 特定事件?

javascript - 我的 Three.js 应用程序未在移动设备上运行

javascript - 从 jquery 对话框调用服务器端方法