如何保存jQuery引用?

时间:2015-02-26 22:14:08

标签: javascript jquery dom

我正在搞乱jQuery和JavaScript原型设计,并尝试了解如何保存/访问jQ对象。

我创建了一个具有单个属性的类

var class1 = function(){
    this.div = $('<div class = "test"/>');
}

然后我制作了一些原型方法来操作它,比如改变它的颜色和html值。

然后我创建了该类的两个实例,并且能够改变每个实例的单个DOM元素。

var myDiv1 = new class1().build().colour('green').colour('red');

var myDiv2 = new class1().build().colour('red').doHTML();

我很惊讶地看到每个类都维护了对不同DOM元素的引用,即使它已经附加到<body>。我想知道这是如何实际工作的。是否存在类或jQuery保持引用的隐藏DOM ID?它如何知道要操作哪个DOM元素?

谢谢。

http://jsfiddle.net/o2uuevgx/3/

2 个答案:

答案 0 :(得分:1)

jQuery保留对它的引用。它在您创建元素并在内部存储时进行引用。

答案 1 :(得分:1)

JavaScript变量通过引用跟踪对象。

因为DOM节点是对象,所以对引用DOM节点对象的变量的任何更改都将直接对引用的对象进行更改。

一个简单的例子:

// create an object
var x = {foo: "bar"};

// create a "reference" to that object
var ref = x;

// manipulate the reference variable
ref.foo = "hello";

// check the original object
console.log(x.foo);

//=> "hello"

如果this.div是对DOM节点的引用(由jQuery创建)并且您this.div.css("color", "red"),则没有什么不同;底层(引用)对象将被更改。