2017-03-02 7 views
0

DatatTbleのセルでカスタムイベントを呼び出す必要があります。だから、私は次のような方法があります:バインディングを作成するにはカスタムイベントの定義とトリガー

(function ($) { 
    $.fn.longClick = function (callback) { 
    //event 
    }; 
})(jQuery); 

を、テストとして、私は次のようにします。

$("h1").longClick(function() { 
    console.log('triggered'); 
}); 

私は私のクリックイベントを交換する必要があります。

$('#dtStatus').on('click', 'tbody td:not(:first-child)', function (e) { 
    console.log('triggered'); 
}); 

私のlongpressイベントで。

$('#dtStatus').on('longClick', 'tbody td:not(:first-child)', function (e) { 
    console.log('triggered'); 
}); 

h1 longclickとtdクリックイベントの仕事が、TD longpressにはありません。 on('longClick')のように自分のイベントを使用できない理由を教えてもらえますか?

ありがとうございます。

+0

'on( 'longClick')'が動作するためには、あなたのコードのどこかで 'trigger( 'longClick')'を使用する必要があります。あなたはそれをやっていますか? –

+0

あなたのケースでは 'longClick'はイベントではなく、プラグインです(' trigger() 'メソッドを使ってプラグイン内の' longClick'イベントをトリガーしない限り) –

+0

@RoryMcCrossanいいえ、私はそれをしていません。申し訳ありませんが、私は 'trigger( 'longClick')'の目的を邪魔していませんでしたか? –

答えて

1

私は、関数をイベントと混合していると思います。 $.fn.longClickを使用して、すでに$("h1").longClick(...)で正常に呼び出された関数を作成しました。

イベントのように使用するには、まずイベントをトリガーする必要があります。たとえば:

$('#dtStatus').click(function() { 
    $(this).trigger("myEvent"); 
}); 

これは、クリックされた項目の名前myEventでイベントをトリガします。あなたはjQuery documentationにカスタムイベントの詳細を読むことができ

$('#dtStatus').on("myEvent", function() { 
    alert("myEvent called!"); 
}); 

:次に、あなたがして、そのイベントをキャッチすることができます。

関連する問題