javascript - else if 子句没有按预期工作

标签 javascript jquery css

我想要一个开闭功能。如果<div>打开时,当我单击它时,它应该关闭,当我再次单击它时,它应该重新打开。 JSFiddle

HTML

<div class='answer'>answer</div>
  <div style='display:none'>
    <textarea name='talking'></textare>
    <input type='submit'>
</div>

Jquery

$('.answer').click(function(){
    if($(this).next().css('display','none')){
        $(this).next().css('display','block');
    }else if($(this).next().css('display','block')){
        $(this).next().css('display','none');
    }
})

在此示例中,“if”子句有效(它打开),但“else if”不起作用(它不会再次关闭)。

最佳答案

在条件语句中,您应该检索元素的 display 属性并将其与属性值的字符串进行比较。

所以说

if ( $(this).next().css('display', 'none') ) {
    // ...
}

应该是:

if ( $(this).next().css('display') === 'none' ) {
    // ...
}

Updated Example

$('.answer').click(function () {
    if ($(this).next().css('display') === 'none') {
        $(this).next().css('display', 'block');
    } else if ($(this).next().css('display') === 'block') {
        $(this).next().css('display', 'none');
    }
});

不过,您的代码可以简化为以下内容:

Example Here

$('.answer').on('click', function () {
    $(this).next().toggle();
});

.toggle() method处理所有这些逻辑。

关于javascript - else if 子句没有按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28776511/

相关文章:

jquery - 将文本附加到具有特定类的 anchor 标记

html - 动态/移动菜单中的菜单标题

javascript - 使用 javascript 将单词数组与图像数组配对

javascript - 无法将带有 SnapSVG 的元素添加到我的页面

javascript - 如果选中将值添加到数组,则 react 复选框

jquery - 使用 jquery css 自定义选择框滚动条 - 是否有跨浏览器兼容的解决方案?

css - 两列,点击左边显示结果在右边

javascript - 这是什么类型的 jquery/javascript 事件?

authentication - 使用 jQuery AJAX 进行 CAS 身份验证和重定向

javascript - 如何从渐变映射数字特定颜色