仅使用函数名称语法进行 Jquery 更改时如何传递参数?

cod*_*ama 3 jquery

如果我有一个功能:

function doSomething() {
   ///
}
Run Code Online (Sandbox Code Playgroud)

我可以将其与 .change 一起使用,如下所示:

$("input[name='bla']").change(doSomething);
Run Code Online (Sandbox Code Playgroud)

但是,如果函数是:

function doSomething(bla) {
   ///
}
Run Code Online (Sandbox Code Playgroud)

我想将“this”作为参数传递给函数?这似乎不起作用:

$("input[name='bla']").change(doSomething(this));
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

更新

我不想要这个:

$('a.link').change(function (e) { doSomething($(this)); } );
Run Code Online (Sandbox Code Playgroud)

我想要这个:(但正确的语法会起作用)

$('a.link').change( doSomething($(this)) );
Run Code Online (Sandbox Code Playgroud)

Sum*_*mit 5

http://api.jquery.com/change/和所有其他 jquery 事件都有接受 eventData 作为第一个参数的事件处理程序的变体。

.change( [eventData ], handler(eventObject) )
Run Code Online (Sandbox Code Playgroud)

但在这种情况下,您的处理程序函数将在 eventObject 中查找 eventData

http://api.jquery.com/event.data/

所以你的函数看起来像这样来使用这个变体。

var that = this;
$("input[name='bla']").change({otherThis:that}, doSomething);

function doSomething(e) {
   var $this = $(this);
   var otherThis = e.data.otherThis;
}
Run Code Online (Sandbox Code Playgroud)

我加了

var $this = $(this);
Run Code Online (Sandbox Code Playgroud)

表明

$this
Run Code Online (Sandbox Code Playgroud)

是个

$("input[name='bla']")
Run Code Online (Sandbox Code Playgroud)

那被改变了。希望有帮助。