如何从同一对象返回数组或元素?(jQuery)
How to return an Array or an Element all from the same Object? (jQuery)
我试图将jQuery简化为一组非常具体的函数,以便在产品中使用(以及我的一般学习)。浏览源代码,这似乎是jQuery库背后的主要结构。效果非常好。
我不明白的是,jQuery如何返回元素数组,以及如何保留jQuery对象。
例如,$("body")将返回数组中的主体,但我仍然可以说$("body").hide()(所以我实际上是在数组上调用'hide' ?)
问题:我如何返回数组和在第一个函数中创建的jQuery对象?
var MyNewLibrary = function (selector, context) {
return new MyNewLibrary.fn.init(selector, context);
};
var $$ = MyNewLibrary;
MyNewLibrary.fn = MyNewLibrary.prototype =
{
el: null,
length: 0,
selector: "",
init: function (selector, context)
{
var elem;
elem = document.getElementById(
selector[0].substr(1, selector[0].length));
if (elem)
{
this.length = 1;
this[0] = elem;
}
this.context = document;
this.selector = selector;
return this;
},
//Example of chained function
Html: function (str) {
if (typeof str == "string") {
this[0].innerHTML = str;
}
if (typeof str == "undefined") {
return this[0].innerHTML;
}
return this;
}
};
MyNewLibrary.fn.init.prototype = MyNewLibrary.fn;
MyNewLibrary.BasicFunction = MyNewLibrary.fn.BasicFunction = function ()
{
return "A string returned by $$.BasicFunction()";
};
数组是一个对象,对象可以有函数,因此通过传递性,数组可以有函数。如果有多个结果,继续将它们添加到库的新创建对象中。
this[0] = element1;
this[1] = element2;
// and so on
它不是一个数组,而是一个类似数组的对象,具有length
属性和相应的数字索引。jQuery也不返回数组,可以用
$("<some selector>") instanceof Array; // false
然而,jQuery总是返回这个类似数组的对象,即使是通过id选择元素。在这种情况下,返回一个类似数组的对象(jQuery对象),其中包含一个元素。
相关文章:
- 可以't附加html元素jquery
- 循环遍历元素jquery选择器
- 在ajax加载的元素jquery上包含现有的jquery函数
- 如何删除元素列表中的类并添加到另一个元素 Jquery.
- 获取单击的类元素 jQuery 的名称值
- 获取上一个元素 jQuery 的内容
- 根据另一个元素的更改获取一个元素(jquery)
- 区分不同的可拖放元素(jQuery 拖放)
- 除了最后一个<td>元素-Jquery
- 获取子元素jQuery的单选按钮值
- 捕获元素jquery外部的mousedown事件
- .append到非DOM元素jQuery
- 获取其父元素的精确子元素.Jquery
- 获取重复结构中的特定元素jquery
- 捕获隐藏输入元素jQuery的值
- 使用onclick函数获取点击的元素jquery
- 返回父元素 jquery 中的输入值
- 按属性查找元素 jQuery
- 选择元素 jQuery
- 按子元素 - jQuery 的数据 ID 对 li 进行排序