jQuery:使用append()后我无法修改元素的CSS颜色

时间:2011-04-01 21:44:54

标签: jquery

我使用jQuery的append()命令从数组中创建一组DIV。

在执行简单的JSON请求之后,我现在想使用css()命令更改DIV中文本的颜色。但是,我似乎无法让它发挥作用。

以下是我编写的代码的横截面:

function createList(myArray){
    $.each(myArray,function(index,item){
        $("#results_panel").append('<div id="result_'+item+'">'+item+'</div>');
        doSomeStuff(item);
    });
}

function doSomeStuff(item){
    var urlJSON="file_upload.php?ip_address="+item;
    $.getJSON(urlJSON,function(json){
        if (json.result == "true") {
            $("#result_"+item).css("color","#00FF00");
        } else {
            $("#result_"+item).css("color","#FF0000");
        }
    });
}

如果我使用document.getElementByID。(“result _”+ item).style.color,那么这将有效。

谁能告诉我这里做错了什么?我对jQuery很新,所以如果这是一个非常明显的问题,请道歉。

3 个答案:

答案 0 :(得分:5)

您的问题是您用作元素ID的值。 Have a look at this fiddle ->

DOM方法将允许带有IP的名称。但是,jQuery将IP地址中的.解释为类选择器的开头,因此不会选择任何内容。

看看这两个演示:

通过用下划线替换IP中的.,该ID对于jQuery选择有效,并且颜色将被正确应用。

答案 1 :(得分:0)

我试图用一个可能完全错误的答案来回答问题。如果我错了,我会让低调的力量纠正我。 ; O)

问题(我相信)是在数组完成循环之前不会追加元素。所以他们还没有被选中的DOM。一个修复方法是将CSS更新移动到循环本身:创建一个新的jQuery div元素,应用CSS,然后附加它。

答案 2 :(得分:0)

我认为你可以解决两个问题 - 你提到的问题和你可能没有意识到的问题是由于在.each调用中附加代码而导致的 - 你创建的方法略有不同所有的HTML,然后一次性附加它。这种方法会使你遇到的问题没有实际意义,而且它会提供更好的性能。

有关我所指的详细示例,请参阅http://jquery-howto.blogspot.com/2009/02/5-easy-tips-on-how-to-improve-code.htmlhttp://www.learningjquery.com/2009/03/43439-reasons-to-use-append-correctly