2011-04-01 111 views
1

我已經使用jQuery的append()命令從數組創建一組DIV。jQuery:使用append()後,我無法修改元素的CSS顏色

做了一個簡單的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(「結果_」 +項目).style.color但是這會工作,。

任何人都可以告訴我我在做什麼錯嗎?我對jQuery相當陌生,所以很抱歉,如果這是一個非常明顯的問題。

+0

你的getJSON出錯了嗎? – Chandu 2011-04-01 21:49:26

+0

getJSON成功返回。我可以做一個警報,彈出預期值。 – 2011-04-01 21:54:51

+0

此代碼之外必須有一些導致問題的東西。我所做的只是改變網址以及數據的傳遞方式,在我看來,它的工作原理是:http://jsfiddle.net/Ender/NVngU/1/ – Ender 2011-04-01 22:14:36

回答

5

您的問題是您使用的值作爲元素的ID。 Have a look at this fiddle ->

DOM方法將允許帶有IP的名稱。但是,jQuery將IP地址中的.解釋爲類選擇器的開始,因此不會選擇任何內容。

看一看這兩個演示:

通過在IP用下劃線代替.秒,ID爲jQuery的選擇變得有效,且顏色將被正確應用。

+0

很酷你怎麼注意到,只是通過看json網址:)投了贊成 – Daniel 2011-04-01 22:49:01

+0

@dakis - 相信我,這是盲目的運氣,我終於看到它,但謝謝你:) – Ender 2011-04-01 22:49:54

+0

這是問題!非常感謝你幫助我。我真的很感激:) – 2011-04-01 22:56:15

0

我試圖用可能完全錯誤的答案來回答一個問題。如果我錯了,我會讓低調的力量糾正我。 ; o)

問題(我相信)是你的元素不會追加,直到數組完成循環。所以他們不在DOM中尚未被選中。一種修復方法是將CSS更新移動到循環本身中:創建一個新的jQuery div元素,應用CSS,然後附加它。

+0

事情是,我想先顯示div。當JSON響應進來(這是一個文件上傳),然後我想要把顏色變成綠色或紅色,這取決於成功。我會盡力的。 – 2011-04-01 21:58:52

+1

我不認爲就是這樣。看看這個小提琴:http://jsfiddle.net/Ender/NVngU/ – Ender 2011-04-01 22:07:56

+0

@ender我相信你是對的!我完全錯過了他每個人都在使用jQuery,我沒有這個問題。 – 2011-04-01 22:13:37

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瞭解我所指的具體示例。

+0

謝謝你的鏈接。我已經遵循了建議,並在構建完所有HTML之後調整了我的代碼以執行append()。儘管從現在開始我會繼續這樣做,但恐怕對問題的結果沒有任何影響。 – 2011-04-01 22:15:56