使用 shift 在具有字符串/数组的文档中查找元素
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
?我做错了什么?
JsFiddle 的例子
不要使用 .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
.
因为在最后一个班次之后,数组是空的。
见小提琴。
编辑小
提琴 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);
}
});
试试看
[0]:http://jsfiddle.net/67xs04f1/9/
如果想要一个一个元素,并且如果您删除一个元素并想要特定元素,则有两个示例
相关文章:
- 在与 IE8 兼容的文档片段中查找数据
- MongoDB findAndModify:>>>查找和更新文档数组中的对象
- 使用 Mongoose 在所有现有集合中查找引用的文档
- 查找文档,然后在数组中查找条目并将其从数组中删除
- 查找系列中的下一个HTML文档
- 查找包含子对象MongoDb和Node.js的特定字段的文档
- 使用 shift 在具有字符串/数组的文档中查找元素
- 在MongoDB和Node.js中查找某个字段具有与对象完全相同元素的文档
- Expressjs Mongoose 查找嵌套的嵌入式文档未定义
- MONGO 查找数组中至少有一个项目不在另一个项目中的文档
- MongoDB with Mongoose - 仅查找某些子文档
- 如何在文档中查找数字并计算(更改原始数字)
- 如何禁用或阻止 ReactJS 在服务器端呈现时查找文档
- mongoDB:在具有父引用的模型树结构中查找缺失的文档
- 搜索文档并查找所有带有标题的输入
- Mongo 和 Node.js:通过使用 UUID (GUID) _id查找文档
- 使用 JS 查找和替换文档中的特定文本字符
- Chrome快速查找(ctrl+f)重新定位文档中的元素
- MongoDB按日期范围查找文档-JavaScript
- 描述类查找或创建mongo文档