检测下拉开启

有没有办法(在简单的JS或jQuery中)确切地检测到那个时刻,下拉(select-tag)打开了? 为了澄清更多,一个小例子:

如果在选择上单击5次,则会发生以下情况:

drop down opens > Event should fire drop down closes drop down opens > Event should fire drop down closes drop down opens > Event should fire 

到目前为止,我只能找到点击/焦点/焦点的事件。

看看这段代码:

HTML:

   

JQuery的:

 var flag=1; $("#fire").click(function(){ if(flag==1){ $("p").append("clicked "); flag=0; } else { flag=1; } }); $("#fire").blur(function(){ flag=1; }); 

jsFiddle就在这里

 var select = document.getElementById('mySelect'); mySelect.addEventListener('mousedown', function() { console.log('mousedown event fired on mySelect'); }); 

看到这个小提琴: http : //jsfiddle.net/ToddT/hYT9q/

扩大@Todd的答案

 var select = document.getElementById('mySelect'); mySelect.addEventListener('mousedown', function() { if( $(this).attr("data-IsOpen") == 1 ){ $(this).attr("data-IsOpen", 0); //it's closed }else{ $(this).attr("data-IsOpen", 1); //it's open } var isOpen = ($(this).attr("data-IsOpen") == 1); //should give true or false console.log(isOpen); }); 

我们正在做的是为元素添加一些属性,在这种情况下,当你第一次点击一个select元素时,它会询问它的data-IsOpen属性,因为它不存在,我们将用1初始化它,表示选择已打开。

当我们再次点击它时,我们会问同样的,现在它已打开,我们将属性更新为0,表示它已关闭。

希望这会有所帮助,干杯。