2014-11-20 40 views
0

我從後端服務器提取數據並創建div來表示數據。我加入Boostrap的popover,一切看起來不錯。但是,如果大於20,我想根據變量更改彈出顏色。例如, 。根據父母價值標準更改彈出式顏色/類

//Ajax from Server: 
    //loop thru data 
    for (var i in c) { 
     var myid = c[i][0] 
     var myTime = c[i][1] 
     $("#holdcontainer").append('<div id="' + myid+ '" data-toggle="popover" data-container="body" data-placement="top" title="test1" data-content=" ' + myid + ' Time: ' + myTime + '" >' +myTime + '</div>' 

     if (myTime > 30) { 
     //trying this but not working. 
     $("#" +myid + " .popover-title").css({ "background": "red", "color": "white" }); 
     } 
    } //end loop 

    //initiate popover 
    $('[data-toggle="popover"]').popover({ trigger: "hover" }); 
+0

而且......不說不行?它在哪裏失敗?出了什麼問題?有什麼錯誤?什麼是您的(相關)HTML? – 2014-11-20 21:05:48

+0

它不會改變顏色。我只是得到灰色/默認彈出顏色。沒有控制檯錯誤。所以我不確定我是否做得對。 – causita 2014-11-20 21:06:56

回答

1

選擇器$(「#」+ myid +「.popover-title」)不起作用,因爲.popover-title不是「#」+ myid的一部分。

也許解決方案是增加顯示事件:

UPDATE(事件是外循環)

function start() 
{ 
    for (var i in c) { 

     var myid = c[i][0] 
     var myTime = c[i][1] 

     $("#holdcontainer").append('<div id="' + myid+ '" data-toggle="popover" data-container="body" data-placement="top" title="test1" data-content=" ' + myid + ' Time: ' + myTime + '" >' +myTime + '</div>'); 

     if(myTime>30)  $("#" +myid).attr('data-new-class','newTitle'); 
    } 

    $('[data-toggle="popover"]').popover({    
      trigger: "hover"    
     }).on('shown.bs.popover', function() { 
      var newClass=$(this).attr('data-new-class');   

      if (typeof newClass !== "undefined")     
       $(".popover-title:visible").addClass(newClass) 

     }); 

} 

FIDDLE

+0

非常聰明。我在手機上,但在循環內或循環後的事件?如果在循環內部會導致大約7k行的性能問題?謝謝! – causita 2014-11-20 22:47:25

+0

我做了更改。請看上面 – dm4web 2014-11-20 23:12:57

-1

難道是myTime被解釋爲一個字符串,而不是一個數字?

試試這個:

var myTime = Number(c[i][1]); 

,如果你設置了的jsfiddle它會更容易去嘗試。