jQuery插件函数调用.On

时间:2012-01-21 06:42:20

标签: jquery dynamic

如果我有一个jQuery插件,如下所示:

(function($)
{
    $.fn.somefunction = function(text, options){
        ...function code goes here
    };

    $('.selector_name').somefunction();
})(jQuery);

如何使它与.on函数绑定,以便它为动态加载的元素运行。

我试过了:

(function($)
{
    $.fn.somefunction = function(text, options){
        ...function code goes here
    };

    $('.selector_name').on.somefunction();
})(jQuery);

但是这给了我一个JScript运行时错误:“对象不支持属性或方法'somefunction'。

我该怎么做?

3 个答案:

答案 0 :(得分:2)

on仅对事件有效。你也可以将它绑定到自定义事件。

$('.selector_name').on("somefunction", function(){
   ****
});

但你必须再次触发

$('.selector_name').trigger("somefunction");

http://api.jquery.com/on/


working sample

答案 1 :(得分:1)

如果要将函数绑定到动态加载的元素,请在添加它们时执行。

var $newElem = $('div');
$newElem.somefunction();

on与事件绑定,而不是与函数绑定。

$(selector).on('click', function() { ... });

jQuery中没有'on elements created'方法。当您添加它们时,如果需要,您将需要完成绑定它们的工作。


//load some content via ajax
$('div').load('foo.html');
//rebind your function if need be
$('div').children('span').somefunction();

答案 2 :(得分:0)

查看jQuery documentation for .on

使用on的语法是:

.on( events [, selector] [, data], handler(eventObject) )

举个例子,它就像这样:

$("#dataTable tbody tr").on("click", function(event){
    alert($(this).text());
});

或者,如果您想使用选择器,对于直播活动,on会“观察”所选的tr(第二个参数)以进行更改:

$("#dataTable tbody").on("click", "tr", function(event){
    alert($(this).text());
});