我使用jQuery生成当您将鼠标悬停在元素上时显示的信息框。问题是,根据最近运行的功能,每个元素可以显示2个不同的值。我稍后会添加一些代码,但首先我会解释我正在尝试的内容。所以我设置了一个全局标志bySection = false
并在我的每个函数的末尾; setBySection()
和setByTotal()
,我将标记设置为true
或false
。所以在我的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
上的值。
当我将鼠标悬停在元素上而不是在页面加载时,如何检查我的布尔值?
答案 0 :(得分:0)
由于您要在悬停时检查布尔值,最好的方法是使用jQuery's .hover()并将回调函数设置为用于生成代码的函数。这必须仍然在$(document).ready
内,因为您希望它只在页面的DOM加载后才响应。
代码看起来像这样 -
$( "g" ).hover(
function() {
// functionality of code
}
);