我很难让jquery函数按照我的意愿行事。我相信悬停处理程序正在多次注册,导致它反复触发,但我不确定如何正确地执行它。非常感谢任何帮助。
function hoverOptions(target)
{
var option = target.children('.option');
var tooltip = option.children('.tooltip');
option
.fadeToggle(150, function() { console.log('option'); })
.hover(function() { console.log('tooltip'); });
};
$(document).on('hover', '#myElement', function()
{
$(hoverOptions($(this)));
});
答案 0 :(得分:0)
我认为您正在两次注册此活动。
function hoverOptions(target)
{
var option = target.children('.option');
var tooltip = option.children('.tooltip');
option
.fadeToggle(150, function() {console.log('option');)}
.hover(function(){console.log('tooltip')});
};
$(document).on('hover', '#myElement', function()
{
hoverOptions($(this));
};
如果要在jQuery名称空间中声明方法:
$.hoverOptions = function(target){ //Your code }
答案 1 :(得分:0)
当您想要调用悬停事件时,您正在注册悬停事件。
此外,您只为一个元素委派事件。事件委托只是一个好主意,其中涉及许多元素。
目前还不完全清楚你想要什么,但我已经猜到了这一点(注意缩减的代码)。
//on hover to #myElement, fade toggle the .option child
$('#myElement').on('hover', function() {;
$(this).children('.option').fadeToggle(150, function() {
console.log('option');
});
});
//on hover to .option elements, toggle the .tooltip child
$('.option').hover(function() { $(this).children('.tooltip').toggle(); });