2017-03-02 154 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 click事件的工作,但TD longpress沒有。 有人能告訴我爲什麼我不能使用我的活動,如on('longClick')

謝謝。

+0

對於on('longClick')'工作,你需要在你的代碼中的某個地方使用'trigger('longClick')'。你在做那個嗎? –

+0

您的情況'longClick'不是一個事件,它是一個插件(除非您使用'trigger()'方法觸發插件中的'longClick'事件 –

+0

@RoryMcCrossan不,我不這樣做。對不起,但是我在undestranding'trigger('longClick')'的目的時遇到了麻煩,請給我一些更多的細節? –

回答

1

我認爲你正在將事件與功能混合在一起。通過$.fn.longClick,您創建了一個已經成功使用$("h1").longClick(...)調用的函數。

現在,要像活動一樣使用它,您需要先觸發它。例如:

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

它觸發與被點擊的項目名稱myEvent事件。然後你就可以趕上與該事件:

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

您可以在jQuery documentation閱讀更多關於自定義事件。