【问题标题】:jquery: toggle and css display statusjquery:切换和css显示状态
【发布时间】:2023-03-20 21:24:01
【问题描述】:

我有一个 div,它使用 jquery 的“快速”切换方法隐藏/显示。切换发生后,我立即记录切换的 div 的 css 显示状态,如果它从显示变为隐藏,则状态显示为“块”...

但根据 jquery 文档,它现在应该是“无”:

当提供持续时间时, .toggle() 成为动画方法。 .toggle() 方法同时为匹配元素的宽度、高度和不透明度设置动画。当这些属性在隐藏动画后达到 0 时,将 display style 属性设置为 none,以确保该元素不再影响页面的布局。

$(this).parents('#accordionContainer').find('div.accordionContent').toggle('fast');
    console.log($(this).parents('#accordionContainer').find('div.accordionContent').css('display'));

我的控制台日志输出:

阻止

jquery....min.js(第 162 行)

编辑:只是在这里大声思考,但想知道我是否需要在切换和显示检查之间设置一个 setTimeout,可能是 1 秒左右?更好的是,切换是否返回 isFinished 消息或类似的东西?

【问题讨论】:

标签: jquery toggle


【解决方案1】:

“紧接着”调用切换,该方法正在异步动画。由于它正在调整宽度和高度来执行动画,因此必须将 CSS 声明为 display:block。动画完成后,CSS 应该会像您预期的那样显示:无。

您可以在动画完成后通过向 toggle() 函数提供回调参数来调用一段代码。例如:

$(this).parents('#accordionContainer').find('div.accordionContent').toggle('fast', 
    function() {
        // This is called when the toggle animation is complete
        console.log( $(this).parents('#accordionContainer').find('div.accordionContent').css('display'));
    }
);

在 JSFiddle 中:http://jsfiddle.net/Ggfe4

【讨论】:

  • 我正在将它写入我的代码中,因为您在这里键入它。 :D 但我仍然收到'块'返回......
  • 这可能是:bugs.jquery.com/ticket/11436:根据帖子,如果父级是 display: block;然后其中的项目将获得父项的显示值,无论它们是否已切换为显示:无...为什么 jquery 会这样做或认为这很有帮助是奇怪的。不确定这是否准确,但这似乎是我正在经历的,因为accordionContainer 是父级并且始终显示,而手风琴内容是一个子级并且可以切换。
  • 看看这个 JSFiddle。使用 jQuery 1.7.2 代码按预期工作并显示“无”。 jsfiddle.net/Ggfe4
猜你喜欢
  • 2011-05-10
  • 2011-05-27
  • 1970-01-01
  • 1970-01-01
  • 2021-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-24
相关资源
最近更新 更多