2017-05-21 12 views
0

私は、jqueryでいくつかのロジックが実行されたときにボタンをクリックします。いくつかの他のイベントの後、私はボタンをクリックして何もしないようにしたい。 $(".myBtn").off(click.mynamespace)または$(".myBtn").css("pointer-events", none);を使用する方が良いですか?jquery .off()vs pointer-events:none

ポインタイベントでは、文字通りクリック、フォーカス、ホバーアクションが無効になるとは思えません。 jqueryをオフにすると、以前にassingされた.click()イベントの実行が停止されます。

+0

ブラウザのフルサポートには、オフ()を使用します。 – charlietfl

+0

あなたのケースでは 'off()'が優れています。 'pointer-events:none'は、基本的に要素がjavascriptよりもはるかに深いところでカーソルに応答するのを止めさせます。 –

答えて

1

私は第3の選択肢を提案します:disabled属性をボタン要素に設定します。マウスとクリックのイベントを抑制することに加えて、デフォルトのスタイルは灰色で表示され、ボタンがクリックできないことをユーザーに通知します。後でボタンを再度有効にする場合は、属性を削除するのは簡単です。あなたの元の2つの提案に関して

$('button').prop('disabled', true); // disable buttons 
$('button').prop('disabled', false); // enable buttons 

  • ボタンが再び有効になることはありません場合は、それを完全に削除することを検討し、ちょうどそのクリックイベントリスナーを削除しないでください。逆に、同じアクションでボタンが再度有効になる可能性がある場合は、イベントリスナーを削除しないでください。
  • このようにしてpointer-eventsのCSSプロパティを使用すると悪いハックになります。透明な要素をバックグラウンドの他のコントロールに「通過させる」ように意図されています。