2016-04-19 12 views
0

選択ボックスの上にマウスを置いたときにイベントをキャプチャしようとしています。私は次のように.on()を使用しています。jQuery .on()はHTML5の選択ボックスでは動作しません。

$(document).on('hover', "select#selectBox", function() { 
    alert("done"); 
    }); 

DOM文書内にこのスニペットを使用しています。

イベントをクリック、スクロール、マウスオーバー、マウスセンターなどに変更しようとしました。 あまりにもそれらのために動作していないようです。

私が間違っている箇所を指摘してください。

私はJSFiddleを作った:https://jsfiddle.net/g9vf1mty/2/

EDIT:迅速な対応のみんなありがとう! 私は間違いを修正しました:)

私は少しJSFiddleを微調整しました。今、私はオプションの数よりも小さいサイズで選択ボックスをスクロールしようとしていると 'ホバー'イベントを 'スクロール'イベントに変更しました。そのようには動作しないようです。

私はjQuery 2.1.3を使用しています。ここ

JSFiddle:https://jsfiddle.net/g9vf1mty/8/

+0

https://jsfiddle.net/g9vf1mty/3/ –

+0

'mouseover'を使用してください。 [デモ](https://jsfiddle.net/g9vf1mty/4/) – Tushar

+0

jQueryをインクルードすると、フィドルが動作します。 –

答えて

1

レディ擬似イベント内でレベルdocumentにバインドされたイベントをラップする必要はありません。

は、最終的に(/アウト)ハンドラ内でイベントの種類によってフィルタリング

$(document).on('mouseenter mouseleave', "#selectBox", function(e) { 
    alert("done: " + e.type); 
}); 
:あなたは動的な要素をhanldeするかもしれない、イベントを委任したいのでと、正しい方法は、両方の mouseenter & mouseleaveイベントをバインドするために、この方法だろう
+0

最新のフィドルをご覧くださいhttps://jsfiddle.net/g9vf1mty/8/ – Ozil

+1

スクロールイベントは、委任に必要なバブルですそれ。回避策を参照してください。http://stackoverflow.com/a/30476388/1414562 –

+0

Scrollイベントがバブルしないという重要な情報をありがとうございます。 – Ozil

3
$("select#selectBox").hover(function() { 
alert("working"); 
}); 

でのMouseEnterイベント

と含まjqueryのを使用する必要があります上記のようにホバー機能を使用する。さらに重要なことに、jQueryライブラリも見逃してしまいました。

jQuery 1.8となり、jqueryの上位バージョンでは機能しません。

+0

'hover()'が100%正確ではありません。イベントはv1.8.3以降では使用されなくなりました。これは公式の文書(https://jquery.com/upgrade-guide/1.9/ – fbid

+0

@fbid)で確認できます。本物の情報源はこちらhttp://api.jquery.com/on/#additional-notesをご覧ください。 jQuery 1.8で廃止されました.1で削除されました。私は、廃止されたという言葉を使用しました。:) – ameenulla0007

+0

ここではイベントを委任していません –

関連する問題