相关的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')) { ...
但我想知道我是否能够这样做,谢谢。
答案 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");