如果我有一个功能:
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)
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)
那被改变了。希望有帮助。