检测下拉开启
有没有办法(在简单的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,表示它已关闭。
希望这会有所帮助,干杯。