2017-08-20 4 views
-1

.click()メソッドの.on()メソッドの後に、単に.off()メソッドを使用しました。
click()イベントがなぜ発生するのか本当に混乱しています!.on()の後のjQuery 3.x .off()

$('span').on('click', function() { $('p').text("You Clicked!") }); 
 

 
$('span').off('click', function() { 
 
    $('p').text("Ha Ha Ha!") });
span{ 
 
    background-color:#ac0; 
 
    padding:5px; 
 
    cursor:pointer; 
 
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> 
 
<span>Click Me!</span> 
 
<p>*****</p>

答えて

2

あなたは関数がoff()メソッドの最後に何のためにあるのか誤解しました。これはコールバックではなく、イベントハンドラです。

この関数は、最初に設定したものと同じイベントハンドラ関数であるはずです。このようにして、個々のクリックハンドラを削除することができます。

上記は、クリックするとheard by Bと記録されます。

すべてクリックハンドラを削除するには、関数を完全に省略する必要があります。

$('span').off('click'); 
+0

オハイオ州、ありがとう、 – SalmanShariati

+0

@サルマンシャリアーが正しい答えの1つをマークすることを忘れないでください – Soviut

3

あなたは最初に割り当てられたよりも異なるハンドラ関数を削除しようとしています。

代わりに、関数への参照を作成し、その参照によってそれを削除/追加:

var clickHandler = function() { $('p').text("You Clicked!") }; 

$('span').on('click', clickHandler); 
$('span').off('click', clickHandler); 
関連する問題