页面加载qtip2时javascript无法正常工作

时间:2012-07-09 20:45:36

标签: javascript html qtip qtip2

我在javascript中写了一个漂亮的热图,到目前为止效果非常好。热图基本上是一个具有着色变化的表,基于表中显示的值的阈值。我使用JavaScript来创建表格,并设置颜色。但是,我想显示一个不错的弹出窗口,因此当用户将鼠标悬停在表格的单元格上时,会显示一些其他信息。我找到了这个库qTip2

$(document).ready(function(){

        $('#mytable td').qtip({
            overwrite : false,              // make sure it can't be overwritten
            content : {
                text : function(api){
                    return "Time spent: " + $(this).html();
                }
            },
            position : {
                my : 'top left',
                target : 'mouse',
                viewport : $(window),       //keep it on-screen at all time if possible
                adjust : {
                    x : 10, y : 10
                }
            },
            hide : {
                fixed : true                // Helps to prevent the tooltip from hiding occassionaly when tracking!
            },
            style : 'ui-tooltip-tipsy ui-tooltip-shadow'
        });
    });

此功能可创建热图:

function makeTable(data)
    {
        var row = new Array();
        var cell = new Array();

        var row_num = 26;
        var cell_num = 44;

        var tab = document.createElement('table');
        tab.setAttribute('id', 'mytable');
        tab.border = '1px';

        var tbo = document.createElement('tbody');

        for(var i = 0; i < row_num; i++){
            row[i] = document.createElement('tr');

            var upper = (i+1)*44;
            var lower = i*44;
            for(var j = lower; j < upper; j++){
                cell[j] = document.createElement('td');
                //cell[j].setAttribute('class', 'selector');
                if(data[j] != undefined){
                    var count = document.createTextNode(data[j].diff);
                    cell[j].appendChild(count);
                    var index = parseInt(data[j].diff);
                    /* specify which color better suits the heatmap */
                    if(index >= 0 && index <= 100){
                        cell[j].style.backgroundColor = '#00BFFF';
                    }
                    else if(index > 100 && index <= 1000){
                        cell[j].style.backgroundColor = "#6495ED";
                    }
                    else if(index > 1000 && index <= 4000){
                        cell[j].style.backgroundColor = "#4682B4";
                    }
                    else if(index > 4000 && index <= 6000){
                        cell[j].style.backgroundColor = "#0000FF";
                    }
                    else{
                        cell[j].style.backgroundColor = "#00008B";
                    }
                    row[i].appendChild(cell[j]);
                }
            }

            tbo.appendChild(row[i]);
        }

        tab.appendChild(tbo);
        document.getElementById('mytable').appendChild(tab);
    }

我的<body>标签内有:

 <div id="body">
       <div id="mytable"></div>
    </div>

但是,当我加载页面时,当我将鼠标悬停在表格的单元格上时,我希望看到弹出框,但是会发生一些事情。此外,当我从firebug的终端执行$(document).ready部分时,程序开始按照假设执行。在使用它之前,我还确保将库加载到我的页面中。我也没有在firebug的终端看到任何错误。 <script src="http://localhost/heatmap/javascript/jquery.qtip.js">

有人可以告诉我为什么会发生这种情况? 我的javascript的main功能是

function OnLoad() {
         $.post('index.php/heatmap/getDatalines', 
                function(answer){
                    var data = eval('(' + answer + ')');
                    var list = [];
                    makeTable(data);
                });
    }

由于

在加载时调用whis:google.setOnLoadCallback(OnLoad);

1 个答案:

答案 0 :(得分:4)

您需要在加载表后创建qtip:

function OnLoad() {
    $.post('index.php/heatmap/getDatalines', 
        function(answer){
            var data = eval('(' + answer + ')');
            var list = [];

            makeTable(data);

            $('#mytable td').qtip({
                overwrite : false,         // make sure it can't be overwritten
                content : {
                    text : function(api){
                        return "Time spent: " + $(this).html();
                    }
                },
                position : {
                    my : 'top left',
                    target : 'mouse',
                    viewport : $(window),  // keep it on-screen at all time if possible
                    adjust : {
                        x : 10, y : 10
                    }
                },
                hide : {
                    fixed : true    // Helps to prevent the tooltip from hiding occassionaly when tracking!
                },
                style : 'ui-tooltip-tipsy ui-tooltip-shadow'
            });
        });
    }