Pure JS equivalent of Jquery eq()
Pure JS equivalent of Jquery eq()
什么是jquery的eq()
的纯等价物。例如,我如何实现
$(".class1.class2").eq(0).text(1254);
在纯JavaScript中?
要获取数组中的元素索引,您可以在 javascript 中使用[]
。因此,要重现您的代码,您可以使用以下内容:
document.querySelectorAll('.class1.class2')[0].textContent = 1254;
或
document.querySelectorAll('.class1.class2')[0].innerHTML = 1254;
- 在您的示例中,
1254
是一个数字,如果您有字符串,则应将= 'string';
与引号一起使用。 - 如果您只寻找一个/第一个元素,则可以仅使用
.querySelector()
窃取.querySelectorAll()
。
在这里演示
更多阅读:
MDN:文本内容
MDN: innerHTML
MDN: querySelectorAll
querySelectorAll
返回一个数组,因此您可以使用 index 获取元素0
document.querySelectorAll(".class1.class2")[0].innerHTML = 1254
这是实现它的一种方法。测试工作!它将要选择的字符串拆分为:eq
之前和:eq
之后的部分,然后分别运行它们。它重复,直到没有更多的:eq
了。
var querySelectorAllWithEq = function(selector, document) {
var remainingSelector = selector;
var baseElement = document;
var firstEqIndex = remainingSelector.indexOf(':eq(');
while (firstEqIndex !== -1) {
var leftSelector = remainingSelector.substring(0, firstEqIndex);
var rightBracketIndex = remainingSelector.indexOf(')', firstEqIndex);
var eqNum = remainingSelector.substring(firstEqIndex + 4, rightBracketIndex);
eqNum = parseInt(eqNum, 10);
var selectedElements = baseElement.querySelectorAll(leftSelector);
if (eqNum >= selectedElements.length) {
return [];
}
baseElement = selectedElements[eqNum];
remainingSelector = remainingSelector.substring(rightBracketIndex + 1).trim();
// Note - for now we just ignore direct descendants:
// 'a:eq(0) > i' gets transformed into 'a:eq(0) i'; we could maybe use :scope
// to fix this later but support is iffy
if (remainingSelector.charAt(0) === '>') {
remainingSelector = remainingSelector.substring(1).trim();
}
firstEqIndex = remainingSelector.indexOf(':eq(');
}
if (remainingSelector !== '') {
return Array.from(baseElement.querySelectorAll(remainingSelector));
}
return [baseElement];
};
document.querySelectorAll(".class1.class2")[0].innerHTML = '1254';
Element.querySelectorAll
总结
返回一个非活动 NodeList,其中包含从调用它的元素派生的与指定的 CSS 选择器组匹配的所有元素。
语法
elementList = baseElement.querySelectorAll(selectors);
https://developer.mozilla.org/en-US/docs/Web/API/Element.querySelectorAll
由于您只得到第一个,因此document.querySelector(".class1.class2")
就足够了。它返回元素本身,并且不必为了获取第一个而构建整个节点列表。
但是,如果您想要第一个以外的任何东西,那么您将需要 querySelectorAll
.
相关文章:
- jQuery eq()导致无限迭代
- Opposite of jQuery's :eq()
- JQuery parents().eq(2) 和 .parent().parent() 不行为
- 香草 js 替换 jQuery 的 index() 和 eq()
- jQuery 选择器 eq:() 不起作用
- Pure JS equivalent of Jquery eq()
- Jquery的eq(0),“.first-child”,first()如果它是一个iframe,则不会抓住第一个孩子
- 原型等效于 jQuery eq 方法
- 增量eq(i)setTimeout函数jquery
- Jquery eq(索引越界)和子级
- array.eq()与Javascript和Jquery中的array[]
- 带有变量的Jquery eq选择器不起作用
- 在eq()函数jquery中添加多个索引
- jQuery嵌套:eq选择器
- 如何编写一个jQuery选择器,在单个表达式中使用多个:eq's
- 为什么jQuery $("td:eq(0)")比$("td").eq(0)慢?
- Convert jQuery's eq() to Greensock?
- Understanding jQuery's .eq()
- jquery 's的反义词:eq() - jquery
- 在while循环中将变量传递给:eq jquery选择器