获取.slideToggle()影响的显示状态元素?

我已经尝试过is(':visible')is(':hidden')css('display')但我无法获得元素的显示状态.slideToggle()

我错过了什么?

这是jsfiddle: http : //jsfiddle.net/djlerman/jbNg3/1/

和代码:

    Test Slide Toggle   .ui-icon { float:left; }     $(document).ready(function () { $('span#expandList').click(function () { if ($(this).attr('class') == "ui-icon ui-icon-triangle-1-s") { $(this).attr('class', "ui-icon ui-icon-triangle-1-e"); } else { $(this).attr('class', "ui-icon ui-icon-triangle-1-s"); } $(this.parentNode).nextAll('ul').eq(0).slideToggle(); $('#debug').html($(this.parentNode).nextAll('ul').eq(0).attr('id') + ' is(:visible): ' + $(this.parentNode).nextAll('ul').eq(0).is(':visible') + '
' + $(this.parentNode).nextAll('ul').eq(0).attr('id') + ' is(:hidden): ' + $(this.parentNode).nextAll('ul').eq(0).is(':hidden') + '
' + $(this.parentNode).nextAll('ul').eq(0).attr('id') + ' .css(display): ' + $(this.parentNode).nextAll('ul').eq(0).css('display') + '
' ); }) });

Heading 1

  • Item 1
  • Item 2
  • Item 3

Heading 2

  • Item 1
  • Item 2
  • Item 3

Heading 3

  • Item 1
  • Item 2
  • Item 3

在检查状态之前等待slideToggle完成。

  $(this.parentNode).nextAll('ul').eq(0).slideToggle( (function () { $('#debug').html($(this.parentNode).nextAll('ul').eq(0).attr('id') + ' is(:visible): ' + $(this.parentNode).nextAll('ul').eq(0).is(':visible') + '
' + $(this.parentNode).nextAll('ul').eq(0).attr('id') + ' is(:hidden): ' + $(this.parentNode).nextAll('ul').eq(0).is(':hidden') + '
' + $(this.parentNode).nextAll('ul').eq(0).attr('id') + ' .css(display): ' + $(this.parentNode).nextAll('ul').eq(0).css('display') + '
' ); }).bind(this) );

一旦gp。 提到了“事件整理”的概念我能够找到这个post。

jQuery等待事件完成

我不知道我不知道这个概念以及它与我遇到的问题有什么关系。 谢谢你的煽动。

这是更新的jsFiddle: http : //jsfiddle.net/djlerman/jbNg3/3/

和更新的代码。

    Test Slide Toggle        




Heading 1

  • Item 1
  • Item 2
  • Item 3

Heading 2

  • Item 1
  • Item 2
  • Item 3

Heading 3

  • Item 1
  • Item 2
  • Item 3