ドキュメント要素を取得するには、jquery コードに追加する必要があり[0]
ますが、イベント リスナーを追加する jquery メソッドでは意味がありません。$('#but').mouseout(etc)
またはのいずれかをお勧めします$('#but').on('mouseout', etc)
。
jsfiddle を期待どおりに動作するように更新しましたが、ここで短い説明を試みます。
jquery のドキュメントに従って理解する必要があるイベント リスナーを追加する方法は 2 つあります。.on()
メソッド、メソッド.(event)()
。object.(eventName)()
後者は、例としてクリック ハンドラーをオブジェクトに追加する 代わりに、jquery オブジェクトに追加できます。object.click(function() { console.log('executed'); });
ただし、このメソッドは「ライブ」ではありません。要素が動的に追加された場合、それ自体は更新されません。イベントは、ドキュメントが準備完了の場合にのみ関連付けられます( $(document).ready(function() { do stuff });
)。動的に追加された要素にイベントをアタッチするには、.on()
メソッドが必要です。
たとえば、次の html を見てください。
<div class="wrapper">
<span class="dynamically_added">stuff</span>
</div>
動的に追加されたスパンにイベント リスナーをアタッチするには、jquery に次を追加します。
$(".wrapper").on('click', '.dynamically_added', function() {
console.log('executed');
});
.on()
is(are)の最初のパラメータはイベントです。複数のイベントをスペースで区切って添付できます: .on('click hover')
. 2 番目のパラメーターは、実行する関数またはターゲット要素のいずれかです。上記の例の場合、それはスパンです。もちろん、最後のパラメータは実行する関数です。私の知る限り、単にそこに書くのではなく、実行する関数を参照する匿名関数が必要です。
これがお役に立てば幸いです。