我还有一个关于jQuery架构的问题。$('div')构造了一个新的jQuery对象:
$('div') instanceof jQuery; // true
我想知道为什么可以像数组一样查询它,尽管它不是数组?
$('div')[0]; // returns the first div in the document as a DOM node.
$.isArray($('div')); // false
我只是喜欢这个语法,它看起来很干净!我还注意到它将DOM节点作为数组返回:
console.log($('div
我想知道jQuery对象是如何在Chrome开发者工具的控制台日志中显示为一个数组的。
例如,如果我执行$('<a>'),我在控制台日志中看到的是:
[<a></a>]
但以下陈述是错误的:
var a = $("<a>");
Array.isArray(a); // false
a instanceof Array; // false
我尝试修改jQuery,看看会发生什么,令人惊讶的是,从jQuery函数中删除length会删除数组符号:
length: 0, // commenting this l
我正在尝试将jQuery简化为在产品中使用的一组非常具体的功能(以及我的一般学习)。通过查看源代码,这似乎是jQuery库背后的主要结构。它的效果非常好。
我想不通的最大问题是jQuery如何在保留jQuery对象的同时返回一个元素数组。
例如,$(" body ")将在数组中返回body,但我仍然可以说$("body").hide() (所以我实际上是在数组上调用'hide‘?)
问题:如何同时返回在第一个函数中创建的数组和jQuery对象?
var MyNewLibrary = function (selector, context) {
r
我在Array原型中添加了以下方法:
Array.prototype.foreach = function(func){
for(var i = 0; i < this.length; i++){
if(!func(this[i]) === false) break; //return false from func in order to break the loop
}
return this;
}
在同一个文件中,在上面的代码之后,我有以下jQuery插件:
jQuery.fn.addClassForEvents = function(){
我已经深入jQuery了几天了,似乎每件事都很好--但有件事我总是很困惑:有时,jQuery选择返回一个普通DOM元素数组,有时我得到一个类似于jQuery的数组。
例如,使用ID进行选择:
var note = $('#note')
console.log(note.val());
工作非常好--它是一个jQuery包装的元素,我可以使用所有的jQuery方法。
但是必须通过类来选择它,比如
var notes = $('.notes');
_.each(notes, function (element) {
element = $(element);
启动情况
这两个命令应该是等效的。
jQuery('a').filter(':contains(about)');
和
jQuery.find('a').filter(':contains(about)');
问题
实际上,第一个命令执行得很好,而第二个命令抛出了以下异常:
TypeError: :contains(about) is not a function
为什么会这样呢?jQuery('a')和jQuery.find('a')不应该返回相同的对象吗?如果不是,有什么不同?
解释
我正在动态
jQuery(); //[]
jQuery("#footer"); //[<div id="footer">...</div>]
我知道你可以这样做:
function kablam(tag) {
var els = document.getElementsByTagName(tag);
els.isKablam = true;
return els;
}
var body = kablam("body"); //[<body class="ask-page">...&l
我对jquery很陌生,基本上,我只是查看jquery中的get()函数的来源,它看起来如下(jQuery11.1.3):
get: function( num ) {
return num != null ?
// Return just the one element from the set
( num < 0 ? this[ num + this.length ] : this[ num ] ) :
// Return all the elements in a clean array
slice.cal