4

その瞬間を正確に検出する方法はありますか (プレーンな JS または jQuery で)、ドロップダウン (選択タグ) が開きますか? もっと明確にするために、小さな例:

選択を 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

これまでのところ、クリック/フォーカスイン/フォーカスアウトのイベントを見つけることができました。

4

3 に答える 3

5

このコードを見てください:

HTML:

<script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.10.2.min.js">
</script>
<select id="fire">
    <option>One</option>
    <option>Two</option>
</select>
<p></p>

JQuery:

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

jsFiddleはこちら

于 2013-10-15T17:56:35.837 に答える
3
var select = document.getElementById('mySelect');

mySelect.addEventListener('mousedown', function() {
    console.log('mousedown event fired on mySelect');
});

このフィドルを参照してください: http://jsfiddle.net/ToddT/hYT9q/

于 2013-10-15T17:48:36.547 に答える
2

@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 に更新して、閉じていることを示します。

これがお役に立てば幸いです、乾杯。

于 2013-10-15T17:57:43.527 に答える