如果我有一个功能:
function doSomething() {
///
}
我可以使用.change,如下所示:
$("input[name='bla']").change(doSomething);
然而,如果函数是:
怎么办?function doSomething(bla) {
///
}
我想将“this”作为参数传递给函数?这似乎不起作用:
$("input[name='bla']").change(doSomething(this));
有什么想法吗?
更新
我不想要这个:
$('a.link').change(function (e) { doSomething($(this)); } );
我想要这样:(但正确的语法将起作用)
$('a.link').change( doSomething($(this)) );
答案 0 :(得分:3)
http://api.jquery.com/change/以及所有其他jquery事件 有一个事件处理程序的变体,它接受eventData作为第一个参数。
.change( [eventData ], handler(eventObject) )
但在这种情况下,你的处理函数会在eventObject
中查找eventDatahttp://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;
}
我添加了
var $this = $(this);
显示
$this
是
$("input[name='bla']")
改变了。 希望有所帮助。
答案 1 :(得分:0)
怎么样
$("input[name='bla']").change(doSomething($(this)));
我认为你可以在jquery中使用$(this)来引用对象。
答案 2 :(得分:0)
jQuery自动将函数调用与this
绑定。你不必传递$(this)。
仅当您要将其父级的上下文解析为该函数时。
例如:
$('a.link').change(function (a) {
console.log(a); // is event object
console.log($(this)); // is the same as one match of $('a.link'). `this` is binded to the element
});
(评论后) 或者你可以尝试:
$('a.link').change(function (e) { doSomething($(this)); } );
答案 3 :(得分:0)
使用jQuery,您可以使用$(this)
来引用它,但请注意它将作为对象传递!!
答案 4 :(得分:0)
通常的解决方案是在闭包范围内使用变量:
var that = this;
('a.link').change(function (e) { doSomething($(that)); } );