2013-03-25 22 views
1

當頁面加載隨機顏色時,會生成並應用於'測試顏色'文本和RSS提要的標題。無法在頁面加載時將標題更改爲隨機顏色

http://jsfiddle.net/chrisloughnane/nqkH4/

麻煩的是RSS提要標題的顏色沒有變化。

我設置了一個事件,點擊'TEST COLOR'並且標題顏色會改變,所以我想它是用動態添加的元素做的。

我已經看過.on(),但還沒有設法得到它的工作。

有人可以發佈在頁面加載時更改標題顏色所需的代碼嗎?

TIA

jQuery插件是FeedEk: http://jquery-plugins.net/FeedEk/FeedEk.html

CODE

$(document).ready(function(){ 

    $('#divRss').FeedEk({ 
     FeedUrl : 'http://rss.cnn.com/rss/edition.rss' 
    }); 

    var r = Math.floor(Math.random()*256); 
    var g = Math.floor(Math.random()*256); 
    var b = Math.floor(Math.random()*256); 

    $('#example, .itemTitle a').css("color", getHex(r,g,b)); 

    $('#example').click(function() { 

     $('.itemTitle a').css("color", getHex(r,g,b)); 

    }); 

    function intToHex(n){ 
     n = n.toString(16); 
     if(n.length < 2) 
      n = "0"+n; 
     return n; 
    } 

    function getHex(r, g, b){ 
     return '#'+intToHex(r)+intToHex(g)+intToHex(b); 
    } 

}); 

HTML

<div id="example">TEST COLOUR</div> 
<div id="divRss"></div> 

CSS

.feedEkList{width:450px; list-style:none outside none;background-color:#FFFFFF; border:1px solid #D3CAD7; padding:4px 6px; color:#3E3E3E;} 
.feedEkList li{border-bottom:1px solid #D3CAD7; padding:5px;} 
.feedEkList li:last-child{border-bottom:none;} 
.itemTitle a{font-weight:bold; color:#4EBAFF; text-decoration:none } 
.itemTitle a:hover{ text-decoration:underline } 
.itemDate{font-size:11px;color:#AAAAAA;} 

#example { font-weight: bold; cursor: pointer;} 
+0

您將需要運行的代碼由feedEk進行Ajax請求完成後,但是feedEk不恰當地提供這樣做的一種方式。 – 2013-03-25 18:50:39

+0

我擔心可能是這種情況。我所有的回調嘗試都失敗了。 – 2013-03-25 18:56:05

回答

2

CNC中

針對以下意見,timeout是不可靠的。我擴展了包含的庫以允許回調函數。默認值是alert('done'),但它可以作爲參數傳入以進行任何您想要的操作。

更新小提琴:http://jsfiddle.net/nqkH4/8/

另外,如下文所述,你可以查詢你的目標div的內容,看看它的內容有變化,如果達到,你知道調用完成。

我認爲問題是有一個 輕微延遲與內容命中DOM和腳本試圖設計它。它已經得到它與一個小的 timeout工作。

setTimeout(function() { 
    var r = Math.floor(Math.random() * 256); 
    var g = Math.floor(Math.random() * 256); 
    var b = Math.floor(Math.random() * 256); 
    var color = getHex(r, g, b); 

    $('#example, .itemTitle a').css("color", color); 

}, 50); 

更新小提琴:http://jsfiddle.net/nqkH4/6/

+0

延遲來自ajax請求。 setTimeout可以解決這個問題,但是爲了讓它適用於所有人,延遲對於蜂窩網絡的計算必須是非常重要的,即使請求發生在50ms內,內容顯示之前也會導致嚴重的延遲。 – 2013-03-25 19:00:14

+0

我想你可以設置一個間隔來檢查問題'div'的'html()'以查看它是否已經被填充?然後發出一個臨時回調?我試圖將一個回調函數傳遞給'FeedEk()'無濟於事。 – couzzi 2013-03-25 19:01:48

+0

是的,setInterval比setTimeout更合適。 – 2013-03-25 19:04:42

相關問題