[英]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
? 我究竟做错了什么?
编辑小提琴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()
或其他任何方式在循环内对其进行修改,则不应在_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
。
最后,警报是一个空警报,因为最后一次移位后该数组为空。
参见小提琴 。
[0]:http://jsfiddle.net/67xs04f1/9/
如果想要一个元素一个,并且如果您删除一个元素并想要垂直元素,则有两个样本
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.