下拉列表 - 使用“isActive”属性检查是否打开

时间:2013-07-10 02:36:26

标签: javascript twitter-bootstrap

相关的bootstrap.js代码:

...
Dropdown.prototype = {

  constructor: Dropdown

  , toggle: function (e) {
     var $this = $(this)
     , $parent
     , isActive

  $parent = getParent($this)

  isActive = $parent.hasClass('open')
  ....

有没有办法在oneliner jquery中使用 isActive 检查打开的下拉列表,如:

if($('#dropdownElement').isActive) 

我知道我可以这样做:

var parent = $('#aParentID');
if(parent.hasClass('open')) { ...

但我想知道我是否能够这样做,谢谢。

2 个答案:

答案 0 :(得分:2)

如果你需要一个衬垫,那么把它写成一个插件

(function($){
    $.fn.isActive = function(){
        console.log(this)
        return $(this.get(0)).hasClass('open')
    }
})(jQuery)

然后

$('#dropdownElement').isActive()

演示:Fiddle

答案 1 :(得分:0)

接受的解决方案对我不起作用。我使用的是Bootstrap 4,也许有些东西已经改变了。我深入研究了dropdown.js代码,我发现了这个:

const ClassName = {
  ...
  SHOW      : 'show',
  ...
}
...
toggle() {
   ...
   const isActive = $(this._menu).hasClass(ClassName.SHOW)
   ...
}

所以我的解决方案是:

var isShown = document.getElementById('dropdownElement').classList.contains('show');

使用jQuery,那就是:

var isShown = $("#dropdownElement").hasClass("show");