2014-11-20 58 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它会更容易去尝试。