Javascript 如何在jQuery函数中引用元素';她回电话了吗?

Javascript 如何在jQuery函数中引用元素';她回电话了吗?,javascript,jquery,function,this,Javascript,Jquery,Function,This,假设我有一个jQuery函数,如下所示: $.fn.foo = function(param, callback) { if (typeof callback === 'function') { callback(params); } } 然后在对元素调用函数时,如: $('table tr').foo(bar, function(param) { console.log($(this)); // this needs to reference 'tab

假设我有一个jQuery函数,如下所示:

$.fn.foo = function(param, callback) {
    if (typeof callback === 'function') {
        callback(params);
    }
}
然后在对元素调用函数时,如:

$('table tr').foo(bar, function(param) {
    console.log($(this)); // this needs to reference 'table tr'
});

在这样的情况下,我注意到
这个
引用了窗口。如何引用调用函数的元素而不将其作为回调函数中的参数传递?

要实现这一点,可以使用
call()
设置调用函数的范围

还要注意,
$.fn.foo
函数定义需要两个参数,而不是一个。在本例中,我使用第一个作为应用于元素的类名

$.fn.foo=函数(参数,回调){
if(回调类型==='function'){
callback.call(this,params);
}
}
$('table tr').foo('foo',函数(类名){
$(this).addClass(classname);
});
.foo{color:#C00;}

老实说,对于插件方法来说,这似乎是一种奇怪的方法。您的具体用例是什么?我想在双击
表tr
时提交最接近的表单,或者如果没有表单,只需一个按钮,为了能够在callback@charlietflOk中指定,您只需要意识到,您将无法以这种方式隔离特定的行实例,因为插件中的
this
是jQuery对象,其中包含所有行