132

jquery toggle はデフォルトで preventDefault() を呼び出すため、デフォルトは機能しません。チェックボックスをクリックできない、リンクをクリックできないなど

デフォルトのハンドラーを復元することは可能ですか?

4

18 に答える 18

84

私の場合:

$('#some_link').click(function(event){
    event.preventDefault();
});

$('#some_link').unbind('click');デフォルトのアクションを復元する唯一の方法として機能しました。

ここに見られるように: https://stackoverflow.com/a/1673570/211514

于 2013-02-15T13:38:38.190 に答える
59

そのかなりシンプル

あなたが次のようなことをしたとしましょう

document.ontouchmove = function(e){ e.preventDefault(); }

ここで元の状態に戻すには、以下を実行します...

document.ontouchmove = function(e){ return true; }

このウェブサイトから。

于 2011-11-14T05:21:51.400 に答える
18

復元するpreventDefault()ことはできませんが、できることはそれをだますことです:)

<div id="t1">Toggle</div>
<script type="javascript">
$('#t1').click(function (e){
   if($(this).hasClass('prevented')){
       e.preventDefault();
       $(this).removeClass('prevented');
   }else{
       $(this).addClass('prevented');
   }
});
</script>

さらに一歩進めたい場合は、トリガー ボタンを使用してイベントをトリガーすることもできます。

于 2011-01-06T17:11:54.517 に答える
11
function DoPrevent(e) {
  e.preventDefault();
  e.stopPropagation();
}

// Bind:
$(element).on('click', DoPrevent);

// UnBind:
$(element).off('click', DoPrevent);
于 2016-02-17T12:50:37.380 に答える
9

場合によっては*、最初はreturn falseの代わりにe.preventDefault()、次にデフォルトを に戻したいときに使用できますreturn true

*イベントのバブリングを気にせず、e.stopPropagation()と一緒に使用しない場合の意味e.preventDefault()

同様の質問も参照してください(スタックオーバーフローにもあります)

またはチェックボックスの場合、次のようなものを使用できます。

$(element).toggle(function(){
  $(":checkbox").attr('disabled', true);
  },
function(){
   $(":checkbox").removeAttr('disabled');
}) 
于 2009-10-12T20:26:38.117 に答える
9

これを行うことで、デフォルトのアクション (HREF フォローの場合) を復元できます。

window.location = $(this).attr('href');

于 2014-12-04T15:43:05.290 に答える
2

このコードをテストしてください。問題は解決すると思います。

event.stopPropagation();

参照

于 2014-12-04T15:49:17.820 に答える
1

無効にする:

document.ontouchstart = function(e){ e.preventDefault(); }

有効:

document.ontouchstart = function(e){ return true; }
于 2013-06-13T14:38:33.613 に答える
-2

これはうまくいくはずです:

$('#myform').on('submit',function(e){
    if($(".field").val()==''){
        e.preventDefault();
    }
}); 
于 2021-06-11T19:30:13.783 に答える
-10

私はあなたが何を意味しているのかわかりません:しかし、ここに同様の(そしておそらく同じ)問題の解決策があります...

私はしばしば preventDefault() を使用してアイテムをインターセプトします。ただし、傍受の唯一の方法ではありません...多くの場合、以前と同じように動作を継続するか、停止するかの「質問」が必要になる場合があります。最近のケースでは、次のソリューションを使用しました。

$("#content").on('click', '#replace', (function(event){ return confirm('Are you sure you want to do that?') }));

基本的に、「デフォルトの防止」は傍受して別のことを行うことを目的としています。「確認」は...まあ-確認で使用するために設計されています!

于 2013-01-23T14:25:07.723 に答える