帮助js函数说明 - 为什么$ this = $(this)......?

时间:2010-11-28 14:46:20

标签: javascript jquery

一个名为“mu”的用户向我提供了我真正喜欢的以下答案。 但是,我在这里有一些问题,我希望有人可以帮助我。

鉴于以下内容:

function() {
        var $this = $(this);
        $this.data('orig', $this.html()).html('<a href="blabla.org">go here</a>');
    },
    function() {
        var $this = $(this);
        $this.html($this.data('orig')).removeData('orig');
    }

1) 为什么我们有需要,它做了什么: var $ this = $(this) - 为什么我们不能在整个地方使用$(this)?

2)为什么我们需要那里的'orig'?

请,:)提供尽可能详细的信息,真的,我对这一切都很陌生。

提前多多感谢, MEM

3 个答案:

答案 0 :(得分:3)

无需使用$this代替$(this),但会更快。您正在进行一次调用$(this)并将结果存储在变量中,而不是一遍又一遍地进行调用。

请注意,$(this)是对函数$的调用,其值为this作为参数,而$this只是变量的名称。函数调用返回一个jQuery对象,该对象包含this引用的一个元素的列表,这就是存储在变量中的内容。

字符串'orig'是您要存储的数据的标识符。使用data方法存储的每条信息都需要一个标识符。

答案 1 :(得分:2)

我假设你正在使用jQuery。

var $this=$(this)

只需将jQuery函数的值放入变量(称为$ this)中,节省一点时间,因为它在以后使用时不会调用函数来获取值。

jQuery对象使用“data”属性来保存数据。它是一种关键/类型的财产。所以像

这样的一行
$(this).data('orig', whatever);

在data属性中创建一个名为“orig”的键,并将值“what”放入其中。

答案 2 :(得分:1)

你可以在所有地方使用$(this)但是将元素转换为jQuery对象总是有开销,所以如果你知道你将多次使用jQuery对象,而不是在链中,然后你应该将它存储为一个变量,这样你就不会每次都在jQuery转换中产生开销。

orig部分只存储节点的原始内容,因此它可以在完成后返回到原始状态。与将其存储在变量中类似,但您不必担心范围。