来自id选择器的jQuery数组对象
Posted
技术标签:
【中文标题】来自id选择器的jQuery数组对象【英文标题】:jQuery array Object from id selector 【发布时间】:2013-01-19 20:26:47 【问题描述】:原码:
var myContainer = document.getElementsByClassName("containerName");
for (var i=0; i<list.length; i++)
actionRequest(myContainer[i]);
function actionRequest(container)
$.getJSON(url, function(data)
var array = [];
var object = //create objects;
array.push(object);
container.innerhtml = '';
$.each(array, function(idx, value)
container.innerHTML += '....';
这很好用。但是,一旦我将 id 分配给“containerName”而不是类名:
var myContainer = document.getElementById("containerName");
console.log 向我抛出错误消息:“容器未定义”。
为什么?
【问题讨论】:
getElementsByClassName
返回一个数组,而getElementById
返回单个元素。
javascript var myContainer = document.getElementsByClassName("containerName");
...... jQuery var myContainer = $(".containerName");
我想这一定是显而易见的原因。但是假设有一组 div 标签 ,如果我想在我的代码中引用 'results-row-content' div 标签,但是不影响其他行内容,我应该如何在for循环中创建一个数组?
【参考方案1】:
getElementsByClassName
返回节点列表,但 getElementById
返回单个节点,所以如果你想使用它,你可以删除 actionRequest
周围的 for
循环并在 @987654325 的结果上调用它直接@。
虽然很丑,你可以检查第一个元素是否存在来确定你是否应该做循环:
if (typeof myContainer[i] === 'undefined')
actionRequest(myContainer);
else
for (var i=0; i<list.length; i++)
actionRequest(myContainer[i]);
【讨论】:
不幸的是,我无法删除 for 循环,因为正在操作其他元素。请看我上面的评论,你有解决方案吗>以上是关于来自id选择器的jQuery数组对象的主要内容,如果未能解决你的问题,请参考以下文章
jQuery 选择器和JavaScript 选择器的技巧与异常原因