2

それが可能かどうか疑問に思います:

イベント中に特定の条件を確認したいのですが、その条件が正しければ、すぐにキャンセルしたいと思います。

以下の場合、この条件が満たされると、ユーザーがテーブルを並べ替えることを一切禁止したいと思います。

$(table).bind("sortBegin",function(e, table) { 
   if(condition_is_met){
     // ?? How to cancel the sortBegin?
   }

});

このようなことはjqueryで可能ですか?

更新

謝罪、

1)タグ付けtablesorterは、使用しているプラ​​グインを示すのに十分明確だと思いました。;)とにかくtablesorterそうです。ありがとう

2)条件が満たされなくなるまで、いかなる種類のソートも禁止したいと思います。テーブル全体の並べ替えが停止されるのか、現在のイベントのみが停止されるのかは関係ありません。

4

2 に答える 2

1

残念ながら、プラグインは考慮していませんでした。preventDefault変更するか、コール スタックを中止するために例外をスローする必要がありますpreventDefault

$(table).bind("sortBegin",function(e, table) { 
   if(condition_is_met){
     throw new Error("");
   }

});

jQuery のIIRC は.trigger()同期的に動作します。これが true の場合、これは動作します。

プラグインを変更する場合は、次の方法でサポートを追加できますpreventDefault

var e = $.Event( "sortBegin" );
$this.trigger(e, $t0);
if( !e.isDefaultPrevented() ) {
    setTimeout(function(){
        // set css for headers
        setHeadersCss($t0);
        multisort($t0);
        appendToTable($t0);
    }, 1);
}

コードのクライアントがe.preventDefault()sortBegin-event を呼び出すと、プラグインはソートを続行しません。

于 2013-01-19T12:07:36.987 に答える
-2

jQueryは、セレクターからイベントをアンバインドするアン​​バインド機能を提供します

ここに例があります

$('#foo').unbind('click');
于 2013-01-19T11:54:52.043 に答える