JQuery不读取动态创建的元素属性

时间:2014-01-01 16:53:37

标签: javascript jquery undefined

嗯,我认为这将是一个简单的问题,但我无法意识到Jquery如何失去/无法找到该元素的属性:

使用Javascript:

for (var i=0; i<=10; i++)
{
    Cells[i]=document.createElement('div');
    Cells[i].id = "Cell"+String(i);
    Cells[i].className = "CellClass";
    if (i==0)//Let's look the fist one (neverminds which one).
    {
        alert(Cells[0].className);//This would alert: "CellClass" (without quotes).
        alert($("#Cell0").className);//This would alert: "undefined" (without quotes).
        //Another way:
        alert($(Cells[0]).className);//This would alert: "undefined" (without quotes).
    }
}

对于这个问题,类.CellClass本身并不相关,永远不知道哪些属性定义。

我不理解什么?

3 个答案:

答案 0 :(得分:6)

$(Cells[0])返回一个jQuery包装器对象而不是dom元素引用,因此它没有像className这样的属性。

您可以使用以下任何一种方法

Cells[0].className
$(Cells[0]).prop('className')
$(Cells[0]).attr('class')

还要确保在执行jQuery选择器$("#Cell0")之前将元素添加到dom结构否则将无法在dom查找中找到该元素

答案 1 :(得分:3)

尽管Arun回答了关于jQuery对象和DOM对象之间的区别,但您还会发现$("#Cell0")实际上不会有效,直到#Cell0实际放入DOM中,添加它到父节点。

答案 2 :(得分:0)

alert($("#Cell0").attr('class'));

会工作