鼠标悬停和鼠标输出事件使用而不是单击?

时间:2014-03-18 09:09:17

标签: javascript jquery

我做了一个演示,其中用户点击任何div。它将转到顶部并在标签上设置背景颜色文本。示例如果我单击绿色它将转到顶部并将文本绿色写在顶部。但我需要使用鼠标悬停和鼠标移出事件相同的功能。当用户触摸开始和触摸移动或鼠标悬停和鼠标移出事件时,它将顺时针和逆时针旋转并将文本设置在顶部。我使功能在点击时运行良好但我需要鼠标悬停和鼠标移出,以便顺时针和逆时针旋转它。 http://jsfiddle.net/seiseises/cdZ73/3/

var arr = ["red","pink","blue","green"];

$('#full').on('click', 'div', function() {

    $('.colorName').text($(this).attr('class'));  

    //alert($(this).closest('#full').html());

    var sel = arr.indexOf($(this).attr('class'));

    $(this).closest('#full').find('div')
        .first().removeClass().addClass(arr[sel])
        .next().removeClass().addClass(arr[(sel+1)%4])
        .next().removeClass().addClass(arr[(sel+2)%4])
        .next().removeClass().addClass(arr[(sel+3)%4]);

    //alert($(this).closest('#full').html());
});

由于

4 个答案:

答案 0 :(得分:0)

jQuery有两种方法mouseover和mouseout;

http://api.jquery.com/mouseover/

http://api.jquery.com/mouseout/

以下是如何向这些事件添加侦听器的示例,我没有更新您的功能以进行旋转。

var arr = ["red","pink","blue","green"];

function doStuff(){
         $('.colorName').text($(this).attr('class'));  

        //alert($(this).closest('#full').html());

        var sel = arr.indexOf($(this).attr('class'));

        $(this).closest('#full').find('div')
            .first().removeClass().addClass(arr[sel])
            .next().removeClass().addClass(arr[(sel+1)%4])
            .next().removeClass().addClass(arr[(sel+2)%4])
            .next().removeClass().addClass(arr[(sel+3)%4]);

        //alert($(this).closest('#full').html());
}

$('#full').on('mouseout', 'div', doStuff);
$('#full').on('mouseover', 'div', doStuff);

答案 1 :(得分:0)

点击后,您可以在点击后添加此效果:

$('#full').on('click mouseenter touchstart', 'div', function() { ... });

答案 2 :(得分:0)

如果我做对了,你想要鼠标悬停/鼠标移除效果相同。

只需在事件上添加一个处理程序,就像那样

$('#full div').hover(function(){
    $('.colorName').text($(this).attr('class')); 

    var sel = arr.indexOf($(this).attr('class'));

    $(this).closest('#full').find('div')
        .first().removeClass().addClass(arr[sel])
        .next().removeClass().addClass(arr[(sel+1)%4])
        .next().removeClass().addClass(arr[(sel+2)%4])
        .next().removeClass().addClass(arr[(sel+3)%4]);

}, function(){
    return false;
})

或者,就像Dean所说的那样,只需将所有内容关闭到函数中并添加正确的事件处理程序。

希望这有帮助

答案 3 :(得分:-1)

click事件没问题。所以,只处理mouseovermouseout让我们使用CSS和:hover伪类!

#full div {
    -webkit-transition: -webkit-transform 1000ms ease-out;
    -moz-transition: -moz-transform 1000ms ease-out;
    -ms-transition: -ms-transform 1000ms ease-out;
    -o-transition: -o-transform 1000ms ease-out;
    transition: transform 1000ms ease-out;
}
#full div:hover {
    -webkit-transform: rotate(360deg);
    -moz-transform: rotate(360deg);
    -ms-transform: rotate(360deg);
    -o-transform: rotate(360deg);
    transform: rotate(360deg);
}

这是您更新的 FIDDLE