jquery变量,带$prefix和不带$prefix之间的差异

jquery变量,带$prefix和不带$prefix之间的差异,jquery,function,variables,methods,Jquery,Function,Variables,Methods,我读过另一篇关于jquery变量的帖子/问题,它很有用,但我仍然很难理解。。。 下面是我正在修改的一个简单的选项卡式内容功能的代码 请有人解释一下为什么会这样: $tabMenuItem.click(function() { var activetab = $(this).find('a').attr('href'); $(activetab).show(); //show the active ID content return false; }); …以

我读过另一篇关于jquery变量的帖子/问题,它很有用,但我仍然很难理解。。。 下面是我正在修改的一个简单的选项卡式内容功能的代码

请有人解释一下为什么会这样:

$tabMenuItem.click(function() {     
    var activetab = $(this).find('a').attr('href'); 
    $(activetab).show(); //show the active ID content
    return false;
});
…以及为什么会抛出“$activetab.show不是函数”错误:

$tabMenuItem.click(function() {     
    var $activetab = $(this).find('a').attr('href'); 
    $activetab.show(); //show the active ID content     
    return false;
});
从我所能收集到的信息来看,这两种方法都显示变量保存正确的值-只有第二个版本不允许我将jquery方法/函数附加到它上


我不是一个强大的程序员,任何澄清将不胜感激

在变量前面使用$sign是一种命名约定,JavaScript程序员使用它来标识它是jQuery对象。下面介绍一些常见的命名约定(关于您的问题,请看#3)。对于中级程序员来说,这也是一个很好的复习


在第一个示例中,activetab是一个jquery对象集合。执行$(activetab)是多余的,实际上是从jQuery对象创建jQuery对象。您只需执行activetab.show()

在变量前面使用$sign是一种命名约定,JavaScript程序员使用它来标识它是jQuery对象。下面介绍一些常见的命名约定(关于您的问题,请看#3)。对于中级程序员来说,这也是一个很好的复习


在第一个示例中,activetab是一个jquery对象集合。执行$(activetab)是多余的,实际上是从jQuery对象创建jQuery对象。您只需执行activetab.show()

我想你在问两个问题。首先是美元和无美元的区别。大多数开发人员在变量前面使用$,因为后来他们知道这是一个jquery对象


第二个问题,为什么代码不起作用。这是因为您正在执行attr('href')。返回属性值。无法显示,因为show()是一个jquery函数,可以在html中取消隐藏div。我想您需要的是alert或console.log

我想你在问两个问题。首先是美元和无美元的区别。大多数开发人员在变量前面使用$,因为后来他们知道这是一个jquery对象


第二个问题,为什么代码不起作用。这是因为您正在执行attr('href')。返回属性值。无法显示,因为show()是一个jquery函数,可以在html中取消隐藏div。我想您需要的是alert或console.log

activetab
是所选锚定标记的
href
show()
是一种jQuery方法。该方法需要由jQuery对象调用
$(activetab)
是一个jQuery对象。尽管可能不是你想要的


如果您希望第二个可以工作,并使用
$
作为变量的前缀,那么仍然需要将其设置为jQuery对象。您可以通过
$($activetab)执行此操作。show()

activetab
是所选锚定标记的
href
show()
是一种jQuery方法。该方法需要由jQuery对象调用
$(activetab)
是一个jQuery对象。尽管可能不是你想要的


如果您希望第二个可以工作,并使用
$
作为变量的前缀,那么仍然需要将其设置为jQuery对象。您可以通过
$($activetab).show()来实现这一点

我喜欢将jQuery看作是一个“包装器”,也许这不是这个术语的最佳用法,但让我解释一下:
当您放置类似于
$(someobj)
的东西时,实际上是在向该对象添加jquery功能;您正在围绕它“包装”jQuery。完成此操作后,您就可以访问该对象的所有jQuery功能。但是,由于您已经“包装”了它,因此该对象不再与您开始使用的对象相同。为了跟踪您是否正在使用jQuery“包装”对象,您可以在变量名的开头添加$,以便稍后在阅读代码时知道该对象具有(或不具有)jQuery功能。
注意:如果要从jQuery对象获取原始对象,可以使用
$myjqueryobj.get()

在您的示例中,您将返回单击项目中第一个a标记的href值。这是一个字符串,并将其传递到jQuery对象中,如下所示:
$(activetab)
将href值视为选择器(它不是选择器)。您可以使用
alert(activetab)测试它的值

这两种方法的工作方式相同,因为JavaScript不关心变量是否以$开头。它只是供程序员参考。

我喜欢将jQuery视为一个“包装器”,也许这不是这个术语的最佳用法,但让我解释一下:
当您放置类似于
$(someobj)
的东西时,实际上是在向该对象添加jquery功能;您正在围绕它“包装”jQuery。完成此操作后,您就可以访问该对象的所有jQuery功能。但是,由于您已经“包装”了它,因此该对象不再与您开始使用的对象相同。为了跟踪您是否正在使用jQuery“包装”对象,您可以在变量名的开头添加$,以便稍后在阅读代码时知道该对象具有(或不具有)jQuery功能。
注意:如果要从jQuery对象获取原始对象,可以使用
$myjqueryobj.get()

在您的示例中,您将返回单击项目中第一个a标记的href值。这是一个字符串,并将其传递到jQuery对象中,如下所示:
$(activetab)
将href值视为选择器(它不是选择器)。您可以使用
alert(activetab)测试它的值