9

当单击另一个 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供您使用。

toggle() 上的jQuery 文档在页面下方大约 3/4 处讨论了一个布尔参数“showOrHide”,用于一种使用 toggle() 的方法,但我无法弄清楚如何使用那我自己...

4

3 回答 3

24

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

于 2013-02-25T11:54:47.460 回答
2
$('.elem').slideToggle('fast', function() {
    alert($(this).is(':visible'));
});
于 2015-09-02T15:56:16.977 回答
0
var className = $(el).attr("class"); 

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

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

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

toggle():只需通过更改 CSS 显示属性在选定元素的hide() 和 show()之间切换。

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

于 2016-07-28T07:47:14.950 回答