当鼠标悬停事件已存在时,将单击事件更改为鼠标悬停

时间:2011-11-18 10:58:11

标签: jquery triggers

我已经看过这篇文章:Jquery mouseover firing click作者提到他解决了这个问题,但实际上没有发布解决方案。

问题在于:

有没有办法改变代码,以便在鼠标悬停时触发切换器内容而不是点击?

以下是我的示例:http://nerotic.net/auxout/

这是我正在使用的代码,包括我设置切换器内容面板的动画,直到触发点被移除:

$(document).ready(function() {
    jcps.fader(100, '#switcher-panel');
    var timeouts = new Array();
    var cities = ["#berlin", "#wired", "#sicily", "#sterephile", "#dave", "#hometheatre", "#lsd", "#lefsetz", "#musicart", "#videohifi", "#alu", "#unplggd", "#alfa", "#digitaltrends", "#playboy", "#uncrate"];
    var timeoutLength = 7400;

    for (i = 0; i < cities.length; i++) {
       timeouts[i] = setTimeout("callCity('" + cities[i] +"')", timeoutLength * (i + 1));
    }

    $('.switcher').mouseover(function() {
        for(key in timeouts){  
            clearTimeout(timeouts[key]);  
        }
    });
});

function callCity(city){
    $(city).trigger('click');
}

我试过了:

$(city).trigger('mouseover');
$(city).trigger('onMouseOver');

然后我看到了关于jquery live()的一些信息,并尝试了这个:

$("a.fb").live('onMouseOver', function(){ 
    $(city).trigger();
});

和此:

$("a.fb").live('mouseover', function(){ 
    $(city).trigger();
});

然而,没有效果。在所有情况下,地图继续以相同的方式运行,click事件继续工作,并且不返回任何错误。

如何在鼠标悬停时继续停止动画以及触发点击事件?

2 个答案:

答案 0 :(得分:0)

尝试阻止click事件做任何事情并使用jQuery.load自己加载内容?

    var loadContent = function(var1, var2) {
      // do loading content here using jQuery.load
    }
    $('.switcher').mouseover(function() {
      var cityName = $(this).attr('id');
      loadContent('#world', cityName+'.php');
    });
    $('.switcher').click(function(e) {
      e.preventDefault();
      alert('click will do nothing');
    });

答案 1 :(得分:0)

修复非常简单......

$(城市).trigger( '鼠标悬停');

是正确的,我只需要在实际的.js中将'click'更改为'mouseover'。