即使没有选中复选框,我的javascript语句也不会运行其else语句

时间:2015-01-26 23:23:09

标签: javascript jquery html checkbox

我每次单击标签时都会选中一个复选框。但是,js只会运行初始的if语句。之后,当.menu-bar-checkbox.checked为false时,else语句不会运行。我看到复选框已经过检查。

所以基本上,在标签消失之后,我也无法在之后点击动画。谢谢你的帮助!

我的HTML:

<ul class="ul-links">
  <li class="hide li-portfolio"><a href="index.html" class="selected">Portfolio</a></li>
  <li class="hide"><a href="about.html">About</a></li>
  <li class="hide li-contact"><a href="contact.html">Contact</a></li>
</ul>
<label class="no-pull menu-bar">
    Menu
    <input class="menu-bar-checkbox" type="checkbox">
</label>    

我的js:

$(function() {
    var $hide = $('.hide');
    $hide.hide();


    $('label').on('click', function() {

        if ($('.menu-bar-checkbox').checked = true) {
            $hide.fadeIn(1000);
        } else {
            $('.ul-links').animate ({
                height: 0,
            }, 1000)
        }

    });
})

1 个答案:

答案 0 :(得分:3)

变化:

($('.menu-bar-checkbox').checked = true)

为:

($('.menu-bar-checkbox')[0].checked == true)

使用==检查一个值与另一个值。 $('.menu-bar-checkbox')会返回与class selection匹配的复选框列表。 (在你的情况下只有一个)。使用[0]来解决正确的问题。

完全在jQuery中(如评论中所示)

($('.menu-bar-checkbox').is(':checked'))
  

注意:jQuery将在每个具有类.menu-bar-checkbox的复选框上触发并被选中。 [0]的{​​{1}}只会触发列表中的第一个复选框selected