如何在jQuery中使用条件

时间:2017-08-01 14:05:37

标签: javascript jquery

我使用jQuery生成当您将鼠标悬停在元素上时显示的信息框。问题是,根据最近运行的功能,每个元素可以显示2个不同的值。我稍后会添加一些代码,但首先我会解释我正在尝试的内容。所以我设置了一个全局标志bySection = false并在我的每个函数的末尾; setBySection()setByTotal(),我将标记设置为truefalse。所以在我的jQuery中,我首先检查布尔值,并希望根据此布尔值生成我的信息框。我无法弄清楚这是否是jQuery脚本编写方式的问题,或者我是否编写了错误的代码。

以下是我的(常规)代码,如果我需要添加更多详细信息,请与我们联系:

var bySection = false;

function setBySection()
{
    //generate Sectional Data
    bySection = true;
}

function setByTotal()
{
    //generate Total Data
    bySection = false;
}

$(document).ready(function () {
    mergeSections();

    $("g").each(function () {
        var myid = $(this).attr('id');
        var maxAtt = 0;

        if (bySection == true)
        {
                    for (var i = 0; i < mapCode.length; i++)
                    {
                        if (mapCode[i] == myid)
                        {
                            var myCapacity = capacity[i];
                            var myAttendance = attendance[i];
                        }
                    }

                    var myPercent = myAttendance/myCapacity;
                    myPercent = myPercent.toFixed(2);
                    myPercent = myPercent * 100;

                    $(this).qtip({ // Grab some elements to apply the tooltip to
                        content: {
                            text: myAttendance + "/" + myCapacity + " = " + myPercent + "%",
                            title: {
                                text: 'Section ' + myid + ' Attendance/Capacity: ' ,
                                button: 'Close'
                            }},
                        position:
                        {
                            target: $(this),
                            at: 'top right',
                            my: 'bottom left',
                            adjust: {
                                mouse:false
                            }
                        },
                        show:{solo: true, ready: false, when: 'mouseover'},
                        hide: {when: 'blur', fixed: true}
                    });

        }
        else if (bySection == false)
        {
            //generate info box with Total Data
        }

运行代码后的问题是信息框总是报告总数据,这意味着bySection总是被jQuery读作false。我假设问题是bySection被初始化为false而jQuery只读取$(document).ready上的值。

当我将鼠标悬停在元素上而不是在页面加载时,如何检查我的布尔值?

1 个答案:

答案 0 :(得分:0)

由于您要在悬停时检查布尔值,最好的方法是使用jQuery's .hover()并将回调函数设置为用于生成代码的函数。这必须仍然在$(document).ready内,因为您希望它只在页面的DOM加载后才响应。

代码看起来像这样 -

$( "g" ).hover(
  function() {
    // functionality of code 
  }
);