如果工具提示未悬停 class,如何检查 mouseout
How to check in mouseout if class is not hovered for tooltip
我正在尝试在具有普通 .net 控件以及具有用户控件的 Telerik radgrid 的 aspx 页面上显示工具提示。
我想做什么:
当用户将鼠标悬停在 table 单元格 (td) 上时,我会附加一个带有图像的 div 元素。当用户鼠标输入图像时,我会显示一个工具提示。我的 mouseout 有问题,需要能够检查用户是否在图像上,如果是这样我不想删除工具提示信息 class 否则我确实需要删除它。
问题是什么:
如果我将鼠标向左移动到 mouseenter 图像,它就会消失并使用户无法显示工具提示。
这是我的 jquery 代码:
$('#page_content td', this).mouseover(function (e) {
var nextTD = $(e.target).next('td');
var controlID = nextTD.find("[id*=UI]").attr('id');
var controlelement = document.getElementById(controlID);
if (controlelement != null || controlelement != undefined) {
console.log(controlID);
var addToolTip = true;
var $cell = $(e.target),
$next = $cell.next(),
$prev = $cell.prev();
if ($cell.closest('div').is('[class*="RadGrid"]')) {
addToolTip = false;
}
else if ($cell.closest('div').is('[class*="RadComboBox"]')) {
addToolTip = false;
}
if (!$cell.children().length && addToolTip) {
$cell.prepend($("<div class='tooltipinfo'><img id='" + controlID + "' src='/images/tooltip/infotooltip.png' /></div>"));
}
$(".tooltipinfo").on({
mouseenter: function (e) {
delay = setTimeout(function () {
var imgTargetID = "targetID_" + controlID;
if (controlID != undefined) {
if (controlelement != null) {
showToolTip(controlelement, imgTargetID);
}
}
}, 1000);
},
mouseleave: function () {
clearTimeout(delay);
var $removeImg = $('.tooltipinfo');
if ($removeImg.length) {
console.log('leaving image');
$(".tooltipinfo").remove();
}
}
}, function () {
//var $removeImg = $('#div2');
//if ($removeImg.length && $(".tooltipinfo").length) {
// $("#div2").remove();
//}
});
}
}).mouseout(function (e) {
if ($(e.currentTarget).find('.tooltipinfo').not(':hover')) { // problem here
$(this).css({ "background-color": "red" });
console.log('removing');
$(".tooltipinfo").remove();
}
});
如有任何帮助,我们将不胜感激。
这是有效的最终结果代码。希望这可以帮助别人。感谢 BeardSlapper 的所有帮助。
$('#page_content tr').on('mouseenter', 'td:not(:empty)', function (e) {
if ($(this).find('img').length == 0) {
var nextTD = $(e.target).next('td');
var controlID = nextTD.find("[id*=UI]").attr('id');
var controlelement = document.getElementById(controlID);
if (controlelement != null || controlelement != undefined) {
//console.log(controlID);
var addToolTip = true;
var $cell = $(e.target),
$next = $cell.next(),
$prev = $cell.prev();
if ($cell.closest('div').is('[class*="RadGrid"]')) {
addToolTip = false;
}
else if ($cell.closest('div').is('[class*="RadComboBox"]')) {
addToolTip = false;
}
if (!$cell.children().length && addToolTip) {
$cell.prepend($("<div class='tooltipinfo'><img id='" + controlID + "' src='/images/tooltip/infotooltip.png' /></div>"));
}
}
}
$('.tooltipinfo').on('mouseenter', function () {
delay = setTimeout(function () {
var imgTargetID = "targetID_" + controlID;
if (controlID != undefined) {
if (controlelement != null) {
showToolTip(controlelement, imgTargetID);
}
}
}, 1000);
});
$('.tooltipinfo').on('mouseleave', function () {
clearTimeout(delay);
$(".tooltipinfo").remove();
});
}).on('mouseleave', 'td', function (e) {
$(".tooltipinfo").remove();
});
这是一个fiddle:https://jsfiddle.net/1px2khws/1/
这是一个简化版本,应该可以满足您的要求。
$('#page_content td').mouseover(function(e) {
if ($(this).find('img').length == 0) {
$(this).append('<div class="tooltipinfo"><img src="http://i43.tinypic.com/ev6xix.jpg" width="200"></div>');
}
$('.tooltipinfo').on('mouseenter', function() {
//Show Tooltip
console.log('Show')
});
$('.tooltipinfo').on('mouseleave', function() {
//Remove tooltip
console.log('Remove');
});
});
$('#page_content td').mouseleave(function(e) {
$(this).find('img').remove();
});
如果您需要更多帮助,请直接询问。
我正在尝试在具有普通 .net 控件以及具有用户控件的 Telerik radgrid 的 aspx 页面上显示工具提示。
我想做什么:
当用户将鼠标悬停在 table 单元格 (td) 上时,我会附加一个带有图像的 div 元素。当用户鼠标输入图像时,我会显示一个工具提示。我的 mouseout 有问题,需要能够检查用户是否在图像上,如果是这样我不想删除工具提示信息 class 否则我确实需要删除它。
问题是什么:
如果我将鼠标向左移动到 mouseenter 图像,它就会消失并使用户无法显示工具提示。
这是我的 jquery 代码:
$('#page_content td', this).mouseover(function (e) {
var nextTD = $(e.target).next('td');
var controlID = nextTD.find("[id*=UI]").attr('id');
var controlelement = document.getElementById(controlID);
if (controlelement != null || controlelement != undefined) {
console.log(controlID);
var addToolTip = true;
var $cell = $(e.target),
$next = $cell.next(),
$prev = $cell.prev();
if ($cell.closest('div').is('[class*="RadGrid"]')) {
addToolTip = false;
}
else if ($cell.closest('div').is('[class*="RadComboBox"]')) {
addToolTip = false;
}
if (!$cell.children().length && addToolTip) {
$cell.prepend($("<div class='tooltipinfo'><img id='" + controlID + "' src='/images/tooltip/infotooltip.png' /></div>"));
}
$(".tooltipinfo").on({
mouseenter: function (e) {
delay = setTimeout(function () {
var imgTargetID = "targetID_" + controlID;
if (controlID != undefined) {
if (controlelement != null) {
showToolTip(controlelement, imgTargetID);
}
}
}, 1000);
},
mouseleave: function () {
clearTimeout(delay);
var $removeImg = $('.tooltipinfo');
if ($removeImg.length) {
console.log('leaving image');
$(".tooltipinfo").remove();
}
}
}, function () {
//var $removeImg = $('#div2');
//if ($removeImg.length && $(".tooltipinfo").length) {
// $("#div2").remove();
//}
});
}
}).mouseout(function (e) {
if ($(e.currentTarget).find('.tooltipinfo').not(':hover')) { // problem here
$(this).css({ "background-color": "red" });
console.log('removing');
$(".tooltipinfo").remove();
}
});
如有任何帮助,我们将不胜感激。
这是有效的最终结果代码。希望这可以帮助别人。感谢 BeardSlapper 的所有帮助。
$('#page_content tr').on('mouseenter', 'td:not(:empty)', function (e) {
if ($(this).find('img').length == 0) {
var nextTD = $(e.target).next('td');
var controlID = nextTD.find("[id*=UI]").attr('id');
var controlelement = document.getElementById(controlID);
if (controlelement != null || controlelement != undefined) {
//console.log(controlID);
var addToolTip = true;
var $cell = $(e.target),
$next = $cell.next(),
$prev = $cell.prev();
if ($cell.closest('div').is('[class*="RadGrid"]')) {
addToolTip = false;
}
else if ($cell.closest('div').is('[class*="RadComboBox"]')) {
addToolTip = false;
}
if (!$cell.children().length && addToolTip) {
$cell.prepend($("<div class='tooltipinfo'><img id='" + controlID + "' src='/images/tooltip/infotooltip.png' /></div>"));
}
}
}
$('.tooltipinfo').on('mouseenter', function () {
delay = setTimeout(function () {
var imgTargetID = "targetID_" + controlID;
if (controlID != undefined) {
if (controlelement != null) {
showToolTip(controlelement, imgTargetID);
}
}
}, 1000);
});
$('.tooltipinfo').on('mouseleave', function () {
clearTimeout(delay);
$(".tooltipinfo").remove();
});
}).on('mouseleave', 'td', function (e) {
$(".tooltipinfo").remove();
});
这是一个fiddle:https://jsfiddle.net/1px2khws/1/
这是一个简化版本,应该可以满足您的要求。
$('#page_content td').mouseover(function(e) {
if ($(this).find('img').length == 0) {
$(this).append('<div class="tooltipinfo"><img src="http://i43.tinypic.com/ev6xix.jpg" width="200"></div>');
}
$('.tooltipinfo').on('mouseenter', function() {
//Show Tooltip
console.log('Show')
});
$('.tooltipinfo').on('mouseleave', function() {
//Remove tooltip
console.log('Remove');
});
});
$('#page_content td').mouseleave(function(e) {
$(this).find('img').remove();
});
如果您需要更多帮助,请直接询问。