2011-02-09 93 views
16

我有一個JQuery插件,我想添加一些事件。 任何幫助,提示或教程?將活動添加到Jquery插件

+0

http://stackoverflow.com/questions/319264/jquery-plugin-handling-events – 2011-02-09 08:22:06

+0

嗯,什麼插件?我們不能回答一些事情,如果我們不知道它是什麼... – 2011-02-09 08:24:09

回答

28

據我所知正確如果你有某種按鈕,關閉彈出窗口,你需要一個關閉後觸發的函數。

(function($) { 
    $.fn.somePlugin = function(options) { 
    // do some stuff with popup 
    $('#closeButton').click(function(e) { 
     //close popup 
     if (options.onAfterClose !== undefined) { 
     options.onAfterClose(e); 
     } 
    }); 
    }; 
})(jQuery); 

它只是通過點擊事件傳遞事件。

$('#someId').somePlugin({ 
    onAfterClose: function(e) { 
     alert('after close'); 
    } 
}); 
2

jQuery docs has everything about triggering an event

已連接到使用$.bind()事件的任何元素將被通知該事件已被觸發,並執行其代碼。

例子:

$(document).trigger('my.event'); 

jQuery的支持「命名空間」事件,所以你可以命名事件類似mypluginName.eventName以確保沒有其他插件與您事件干擾;)

簡潔明快,雖然要小心,文件指出:

雖然.trigger()模擬了一個事件 激活,完成一個 合成的事件對象,它不會完全複製自然發生的事件 。

尼斯一天

17

在你的jQuery插件,你必須做的第一件事是在你的插件代碼某處觸發自定義事件:

$( 「#someElement」)。觸發器( 「someSpecialEvent」);

如果需要,還可以將數據傳遞到觸發器函數中。

$("#someElement").trigger("someSpecialEvent", "this does not need to be a string"); 

接下來,在你的插件代碼別的地方創建一個事件處理程序自定義事件:

$("#someElement").bind("someSpecialEvent", function(event, data) { 
    //If you had passed anything in your trigger function, you can grab it using the second parameter in the callback function. 
}); 

然後,您可以允許用戶通過一個回調函數作爲這樣一個選項:

$("#sampleElement").myPlugin({ 
    someEvent: function() { 
     //user logic 
    } 
}); 

最後,在您的插件代碼中,您可以通過幾種不同的方式調用用戶的函數。一個例子是:

$.fn.samplePlugin = function(options) { 
     options = $.extend({}, $.fn.samplePlugin.options, options); 
     $("sampleElement").bind("specialEvent", function() { 
      options.someEvent.call(); 
     }); 
}