以下两个
之间有什么区别var link = $("a#home");
// These two:
link.text("Go Home"); // 1.
$(link).text("Go Home"); // 2.
答案 0 :(得分:6)
由于您已经在创建一个分配给变量的jQuery对象,因此无需再次将其包装在$()
中。
一个常见的约定是对已经是jQuery对象的变量使用$
前缀,这样可以使代码在已存储为jQuery的内容中更具可读性
示例:
var $link = $("a#home");
// we know that $link is jQuery object assuming prefix is only used for jQuery objects
你的例子#2相当于写作:
$( $("a#home") ).text("Go Home");
当以这种形式查看它以将对象再次包裹在$()
中时,显然是多余的
答案 1 :(得分:3)
两者都执行相同的任务,但正如评论中所提到的,后者是包装(已经包装的)jQuery引用。然而,jQuery足够聪明,知道这一点并继续正常进行。
根据我自己的经验,我倾向于让jQuery变量保留$
前缀。然后,当我在其他变量之间反弹时,它清楚地知道什么是已经包装的东西。 e.g。
var $link = $('#home');
$link.text("Go Home");
此外,对于它的价值,如果您通过它的ID(#home
)引用元素,则无需引用该标记。