来自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 选择器的技巧与异常原因

如何增加jquery选择器的值

如何使用类选择器覆盖 id 选择器的 jQuery 事件处理程序?

jQuery选择器探究:ID选择器

jQuery选择器探究:ID选择器

带有 ID 的 jQuery 选择器的性能