读书人

JQuery在hover(in)状态下增添click事

发布时间: 2013-03-26 09:54:34 作者: rapoo

JQuery在hover(in)状态下添加click事件的多次触发现象

HTML code
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>event多次触发</title><style type="text/css">    .out {        width:100px;        height:100px;        padding:10px;        border:solid 1px #CCC;    }    .inner {        width:50px;        height:50px;        border:solid 1px #555;    }    .show {        background:#EEE;        width:200px;        height:200px;        padding:10px;        margin-top:20px;        border:solid 1px #F00;    }</style><script type="text/javascript" src="js/jQuery-1.7.1.js"></script><script type="text/javascript">    $(function() {        var num_c = 0;    //记录click事件触发次数        var num_i = 0;    //记录hover(in)事件触发次数        var num_o = 0;  //记录hover(out)事件触发次数        var html = '';    //显示在.show中的信息        $('.out').hover(function() {            $(this).css('border' , 'solid 1px #F00');            $('.inner').click(function() {                num_c += 1;                $('.show').html(num_c);            });            num_i += 1;        } , function() {            $(this).css('border' , 'solid 1px #CCC');            num_o += 1;            html += 'hover(in)触发次数为:' + num_i + '<br />';            html += 'hover(out)触发次数为:' + num_o + '<br />';            html += 'click触发次数为:' + num_c + '<br />';            $('.show').html(html);            init();        });                //初始化        function init() {            num_c = 0;    //记录click事件触发次数            num_i = 0;    //记录hover(in)事件触发次数            num_o = 0;  //记录hover(out)事件触发次数            html = '';    //显示在.show中的信息        }    });</script></head><body><div class="out">    <div class="inner"></div></div><div class="show"></div></body></html>



当第一次hover并点击的时候,click为1。

每当click一次后,下一次click触发次数将+1(不完全规律,没仔细测过,但是多次触发是一定的现象)

如图,为我click了多次后,显示的各事件触发次数。




这一现象让我很费解,求大侠们帮忙解释下……

[解决办法]
说实在的,我看了你的例子,看了你说的解决方案。还是没搞明白你想要做什么的

[解决办法]
JScript code
$('.out').hover(function() {            $(this).css('border' , 'solid 1px #F00');            $('.inner').click(function() {                num_c += 1;                $('.show').html(num_c);            });
[解决办法]
看了他解决方案里的聊天记录,就是说他原本想要的是每次点击触发一次click事件,然后num_c加1。但是他的代码有问题,然后每次触发hover的时候就会多绑定一次click事件,导致的结果是每次点击触发click事件就是触发N次,num_c的值加了N
[解决办法]
冒泡了?
在接着这句 num_i += 1; 下面加一句
return false; 再试一下
或是把hove改为mouseenter好像

读书人网 >JavaScript

热点推荐