如何在jquery中正确执行函数

时间:2012-08-07 16:22:26

标签: jquery function

我很难让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)));
});

2 个答案:

答案 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(); });