0
/* get every click event on input tags and send it to foo */
$('input').click( function() {
   foo($(this));
});

function foo(obj) {
/* do something with obj.. */
}

使用上面的代码,我将一个输入对象foo作为参数传递给函数obj。我应该如何使用obj?我是否需要重新运行选择器,比如$(obj)使用所有 jquery 特定的方法?

还有一些问题:答案说我不需要obj再次用 $() 包装。如果我重新包装会发生obj什么$(obj)?(假设函数foo可以同时获取 jquery 选择的对象和非 jquery 选择的对象)

4

4 回答 4

1

您正在传递 jQuery 对象,因此无需$()再次包装。

您是否尝试在函数内部运行 jQueryfoo函数?

$('input').click( function() {
   foo($(this));
});

function foo(obj) {
   console.log(obj.val()); //should print the value in the console.
}

还有一些问题:答案说我不需要再次用 $() 包装 obj 。如果我用 $(obj) 重新包装 obj 会发生什么?(假设函数 foo 可以同时接受 jquery 选择的对象和非 jquery 选择的对象)

您可以简单obj[0]地获取原始this对象。

于 2013-02-13T16:17:11.037 回答
1

不。如果它是一个 jQuery 对象,那么您可以使用 jQuery 方法而无需再次使用 $ 引用它。

于 2013-02-13T16:17:14.613 回答
1

不,您已经传递了一个 jQuery 对象,因此无需重新包装。但是由于 jQuery 事件处理程序this在回调中分配元素,所以你可以像这样写得更干净:

$('input').click(foo);

function foo() {
    /* do something with this.. */
}
于 2013-02-13T16:19:44.300 回答
0

不,您可以从其引用中再次使用该对象,无需重新选择。

于 2013-02-13T16:19:46.000 回答