2016-12-08 6 views
1

jQueryセレクタをコールバック関数に送信するにはどうすればよいですか?たとえば、次のコードは、ボタンをクリックすると、jQueryオブジェクトによって選択されたボタンを非表示にします。jQueryセレクタをコールバック関数に送信

function cb (target) { 
    target.hide(); 
} 

$('#button').on('click', cb); 

答えて

1

機能は、あなたが何かを渡す必要はありませんので、イベントを発生させた要素の範囲内で実行される - ちょうどthisキーワードを使用します。例えば。 $(this).hide()

さて、jshintは "これを" 強調表示し、エラーを投げている

function cb() { 
 
    $(this).hide(); 
 
} 
 

 
$('#button').on('click', cb);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<button id="button">Hide me!</button>

+0

: "可能性のある厳格な違反を。"これが有効なJavaScriptなら、なぜそのエラーですか? –

+0

おそらく、関数が正しいスコープで定義されていないと考えているため、 'this'は期待値ではありません。私はこれが完全に有効なコードであることを保証することができます。警告を回避するには、関数をイベントハンドラに直接入れてください: '$( '#button')on( 'click'、function(){$(this).hide()});明らかに、これはあなたが使っていたDRYロジックを防ぐかもしれません。 –

+0

私はjshintエラーを抑制するために、/ * jshint validthis:true * /をコールバック関数に追加するより良い解決法を見つけました。これは明らかに有効なコードなので、 "this"を使用していただきありがとうございます! –

関連する問題