2017-02-05 7 views
1

selectboxドロップダウンが表示/非表示になったときに発生するjQueryイベントはありますか?ドロップダウンが表示されたら、値のselectboxを設定しようとしています。jQuery onドロップダウンイベント、ドロップダウン表示

<select id="foo"> 
    <option value="">----</option> 
    <option selected="selected" value="1"> Option1 </option>       
    <option value="2"> Option 2 </option> 
</select> 

//I need something like this 
jQuery('#foo:dropdown').on('visible', function(){ 
    //Do what you need to do 
}); 

私は変化に使用してみましたが、私はどんな選択が実際に行われる前の値でボックスを移入しようとしていますので、それは、私が探しています正確なイベントではありません。さらに、私は選択をしたら、スクリプトは再び呼び出され、ボックスは決して終わりのないサークルにリセットされるので、selectboxに値を入力することによって動作しますが、クリックでは使用できません。

+0

'は次のチェーンを読み込むために使用され、必要ならばページの読み込み時にも変更を引き起こします – charlietfl

答えて

0

バリーの答えをオフに構築する親切、これは私が出ているソリューションです。

ページが最初にロードされると、varに値0が割り当てられます。選択ボックスをクリックすると、値が直ちに1だけ増加します。次に、varが1に等しいかどうかを確認し、これは、ドロップダウンが開いていることを表し、関数が起動します。実行する必要があることを実行した後、値は2(新しい値-1)減少します。これは、選択ボックスで選択を行う(別のクリックを行う)ときに、選択ボックスが表示されたときにしたいことが何であっても、再び発動しないようにするためです。ただし、次回にクリックすると値が再び1になるため、起動します。上昇し、繰り返す。

$(document).ready(function() { 
    var aa = 0; 
    $('#foo').on('click', function() { 
     aa++;  
     if (aa == 1) { //Basically, is dropdown open? 
     //Do what you need to do when dropdown is open 
     aa = -1; //Now assign new value to aa 
     }   
    }); 
); 
0

おかげさまでお答えするのが楽しいです。これは「クリック」を使用して行うことができます。はい、選択ボックスをクリックするたびに実行されます。しかし、これを修正するためのトリックがあります、我々はこれのためのフラグを設定することができます。したがって、フラグ(変数)はスクリプトの読み込み時にはfalseで、最初にselectをクリックするとtrueに設定され、スクリプトは1回だけ実行されます。

$(document).ready(function() { 
 
    var first_time = false; 
 
    $('select').on('click', function() { 
 
    if (!first_time) { 
 
     console.log('Yes, here I am!'); 
 
     first_time = true; 
 
    } 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<select> 
 
    <option>One</option> 
 
    <option>Two</option> 
 
</select>

+0

を提供します。ユーザーがもう一度それを使用する必要がある場合はどうなりますか? 「クリック」と「