2

相关 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')) { ...

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

4

2 回答 2

3

如果您需要一个衬里,则将其编写为插件

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

然后

$('#dropdownElement').isActive()

演示:小提琴

于 2013-07-10T02:41:04.333 回答
2

接受的解决方案对我不起作用。我使用的是 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");
于 2018-01-11T12:36:00.367 回答