在JavaScript/jQuery中,"$target = $(target)"这个语法的含义是什么?需要解释。

3
下面提到的示例代码是Keith Wood的jQuery倒计时插件的一部分。有人能解释一下吗?
_attachCountdown: function(target, options) {
        var $target = $(target);
        if ($target.hasClass(this.markerClassName)) {
            return;
        }
        $target.addClass(this.markerClassName);
        var inst = {options: $.extend({}, options),
            _periods: [0, 0, 0, 0, 0, 0, 0]};
        $.data(target, PROP_NAME, inst);
        this._changeCountdown(target);
    }

是否有特定的原因来定义$target,还是它只是和我们的简单变量(如var target)一样?

提前致谢。

3个回答

6
这是一个简单的变量,$ 只是为了告诉代码阅读器存储了 jQuery 集合。JavaScript 变量名比较"宽松",$ 没有特殊含义(与 PHP 相反,在每个变量名前都需要加上它)。
这个方法 (var $target=$(target);) 用于将 $(target) (jQuery 集合本身,存储 target)的结果保存到一个变量中,所以不需要每次创建 jQuery 集合时都进行操作。

2
JavaScript中的$对于变量名是有效的,但在其功能上没有任何意义。
原作者可能为了方便而节省了两个按键(如果包括Shift键则为四个),并将其重命名,但保留了$前缀以表示它是一个被jQuery包装的对象。(可以将其视为旧版匈牙利命名法的类比。)

1
不只是方便,速度也很重要。target 可以是一个选择器,在这种情况下,执行四次选择器并不是最优的做法。最好只运行一次选择器并缓存它。节省击键次数其次。 - Amadan
@Amadan:虽然你所说的很正确,但通常情况下,当你发现这种情况时,它通常是因为懒惰而不是效率(效率通常是偶然事件)。;-) - - 编辑:虽然我想使用$target而不是$t,但你可能是对的,这是预期的目的。 - Brad Christie

1

通过以下代码:

var $target = $(target);

脚本的作者将以下变量分配给:

$target

以下表达式的结果:

$(target)

这是 jQuery() 函数的结果($() 只是它的别名),并将 target 变量传递给它。

因此,总结一下,您在这里拥有:

  • target JS 变量(可能是确定选择器的某个字符串),
  • $ JS 函数(基本上是 jQuery 函数,但 $ 别名通常用于编写更短的代码),
  • $target JS 变量,存储 $(target)(或 jQuery(target))表达式的结果

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接