如何确定jQuery toggle的当前状态()

时间:2013-02-25 11:49:56

标签: jquery-ui html toggle

当点击另一个div时,我正在显示并隐藏div。我需要能够确定是否显示或隐藏了特定的div。

最终我要做的是,当点击某个div时,所有其他“显示/隐藏”div应该被隐藏,然后确定clicked-div的相关div是否显示,如果是,则隐藏它,否则显示它。

我还需要根据切换状态为显示/隐藏的div添加/删除css类(用于背景颜色)。

这是我用来切换div的显示/隐藏状态的jQuery代码:

$('#movieListTable').on('click', 'div.vitalsTable', function (e) {

    // Don't do anything if the Edit button or Delete checkbox is clicked
    if (event.target.className !== 'btnEditMovie' && event.target.className !== 'chkDeleteMovie') {

        $(this).parent().parent().find('div.detailsTable').toggle('blind','easeInOutQuart', 300);
    }
});

奇怪 - 令人沮丧的是,我读过的所有内容,包括SO的答案,表明我应该能够检查显示状态(“无”)或可见属性,但是检入控制台上没有任何一个被设置在显示/隐藏的div上。

我创建了一个jsFiddle让你搞砸了。

jQuery documentation on toggle()讨论了关于页面下方3/4的一个布尔参数“showOrHide”,其中一种方法是使用toggle(),但是我还没弄清楚如何自己用它......

3 个答案:

答案 0 :(得分:11)

您可以使用$(div).is(':visible')

答案 1 :(得分:1)

$('.elem').slideToggle('fast', function() {
    alert($(this).is(':visible'));
});

答案 2 :(得分:0)

var className = $(el).attr("class"); 

可以从那里检索当前类逻辑可以接管测试并修改元素:

  • if(className == "yourCss")
  • el.addClass("YourCSS");
  • el.removeClass("YourCSS");

我仍然相信jvnill's answer是有效的,除非必须测试多个类案例。

toggle():只需在所选元素的hide() and show()之间切换,by changing the CSS display property.

注意:当一个类被添加到元素中时,该元素的class属性(列表)将被附加它,除非被.removeClass()调用删除。