使用 shift 在文档中查找带有 string/array 的元素
Find elements in a document with a string/array using shift
我有一份文件,里面有一些 HTML:
<ul class="cl">
<li> <span>span</span>
</li>
</ul>
我还有一个字符串,表示 CSS 某些元素的路径:
var _string = 'div p ul.cl li span';
我想根据文档找到匹配的路径,所以:
ul.cl li span
所以我想使用 shift()
一次截断一段字符串,然后尝试在文档中找到它。如果找到匹配项,我会提醒:
for (var i = 0; i < _array.length; i++) {
if ($(_array.shift()).length) {
alert(_array)
}
}
这是提醒 li,span
但页面上还有 ul.cl
为什么不提醒 ul.cl,li,span
?我做错了什么?
已编辑 fiddle http://jsfiddle.net/67xs04f1/6/
var _string = 'div p ul.cl li span';
var _array = _string.split(' ');
$.each(_array, function (i, item) {
if ($(item).length) {
alert(item);
}
});
试试看
不要使用 .shift。它改变了数组,使你的 for 循环做意想不到的事情。使用数组索引获取如下元素。
var _string = 'div p ul.cl li span';
var _array = _string.split(' ');
for (var i = 0; i < _array.length; i++) {
var el = _array[i]
if ($(el).length) {
alert(el)
}
}
已更新JS-Fidlle
首先,如果您在循环内通过 shift()
或其他任何与此相关的内容对其进行修改,则不应在 _array.length
上 运行。
现在,为什么它会在您进行此更改后提醒它提醒的内容:
var arrLength = _array.length;
for (var i = 0; i < arrLength; i++) {
if ($(_array.shift()).length) {
alert(_array)
}
}
当 _array.shift()
产生 ul.cl 时,第一个匹配将在 $(_array.shift()).length
上,并且在移位之后数组内容是 li,span
.
这就是为什么第一个警报是 li,span
。
同样,下一个警报将是 span
,因为它将找到一个 li
。
最后,警报是空的,因为在最后一次轮班后数组为空。
见Fiddle。
[0]:http://jsfiddle.net/67xs04f1/9/
有两个示例,如果一个一个地想要一个元素,如果你删除一个元素并想要特定的元素
我有一份文件,里面有一些 HTML:
<ul class="cl">
<li> <span>span</span>
</li>
</ul>
我还有一个字符串,表示 CSS 某些元素的路径:
var _string = 'div p ul.cl li span';
我想根据文档找到匹配的路径,所以:
ul.cl li span
所以我想使用 shift()
一次截断一段字符串,然后尝试在文档中找到它。如果找到匹配项,我会提醒:
for (var i = 0; i < _array.length; i++) {
if ($(_array.shift()).length) {
alert(_array)
}
}
这是提醒 li,span
但页面上还有 ul.cl
为什么不提醒 ul.cl,li,span
?我做错了什么?
已编辑 fiddle http://jsfiddle.net/67xs04f1/6/
var _string = 'div p ul.cl li span';
var _array = _string.split(' ');
$.each(_array, function (i, item) {
if ($(item).length) {
alert(item);
}
});
试试看
不要使用 .shift。它改变了数组,使你的 for 循环做意想不到的事情。使用数组索引获取如下元素。
var _string = 'div p ul.cl li span';
var _array = _string.split(' ');
for (var i = 0; i < _array.length; i++) {
var el = _array[i]
if ($(el).length) {
alert(el)
}
}
已更新JS-Fidlle
首先,如果您在循环内通过 shift()
或其他任何与此相关的内容对其进行修改,则不应在 _array.length
上 运行。
现在,为什么它会在您进行此更改后提醒它提醒的内容:
var arrLength = _array.length;
for (var i = 0; i < arrLength; i++) {
if ($(_array.shift()).length) {
alert(_array)
}
}
当 _array.shift()
产生 ul.cl 时,第一个匹配将在 $(_array.shift()).length
上,并且在移位之后数组内容是 li,span
.
这就是为什么第一个警报是 li,span
。
同样,下一个警报将是 span
,因为它将找到一个 li
。
最后,警报是空的,因为在最后一次轮班后数组为空。
见Fiddle。
[0]:http://jsfiddle.net/67xs04f1/9/
有两个示例,如果一个一个地想要一个元素,如果你删除一个元素并想要特定的元素