我有一些类似jquery的功能:
function(elem) {
return $('> someselector', elem);
};
Run Code Online (Sandbox Code Playgroud)
问题是我怎么能这样做querySelector()?
问题是>选择器querySelector()要求明确指定父级.有没有解决方法?
我正在实现ECMA-357附件A中描述的所有可选E4X功能,而我在实现domNodeList(§A.1.2和§A.2.2)时遇到了问题.我如何创建自己的NodeList对象?
即使我创建了一个新的XMLDocument并将每个节点的domNode()表示附加到XMLList中,我仍然看不到如何创建包含所有内容的NodeList,因为通常会排除注释和处理指令.
这是其中一个看起来如此简单,但我无法想出一个很好的方法来解决它.
我有一个节点,也许nodelist = document.getElementById("mydiv");- 我需要将其规范化为节点列表.而不是一个数组:一个真实的,真正的nodeList对象.
不 nodelist = [document.getElementById("mydiv")];
请不要图书馆.
我正在编写一些函数来简化我与Javascript节点的交互,这里是源代码到目前为止:
Node.prototype.getClasses = function() {
return this.className ? this.className.split(" ") : "";
};
Node.prototype.hasClass = function(c) {
return this.getClasses().indexOf(c) >= 0;
};
Node.prototype.addClass = function(c) {
if (!this.hasClass(c)) {
this.className += " " + c;
}
return this;
};
Node.prototype.removeClass = function(c) {
if (this.hasClass(c)) {
var classes = this.getClasses();
var newClasses = [];
for (var index = 0; index < classes.length; index++) {
if (classes[index] !== c) {
newClasses.push(classes[index]);
}
}
this.className = newClasses.join(" ");
}
return this;
}; …Run Code Online (Sandbox Code Playgroud) 首先要做的事情是:这不是问如何将 NodeList 转换为 Array。这是相反的。
为了一致性,我想创建一个返回 NodeList 的函数,就像document.querySelectorAll()做的那样。
这是我当前的代码:
var toNodeList = function(arrayOfNodes){
var fragment = document.createDocumentFragment();
arrayOfNodes.forEach(function(item){
fragment.appendChild(item);
});
return fragment.childNodes;
};
Run Code Online (Sandbox Code Playgroud)
然而,这会从 DOM 中删除原始元素!
我怎样才能NodeList以非破坏性的方式制作一个?