红色的嵌套函数随我点击的次数而执行循环,点击次数越多,循环次数越多,(在不刷新的前提下,第十次点击就会有10次循环)这是什么原因造成的,在嵌套函数的时候如何避免这种循环?<head>
<script src="jQuery.js" type="text/javascript"></script>
<script>
var i=1;
$(document).ready(function()
{
$('li').click(function()
{
alert('this:'+i);
$('li').click(function(){
i++;
alert(i);
})

})
})
</script>
</head>
<body>
<li>adfaf</li>
</body>
</html>

解决方案 »

  1.   

    因为你每点一次又多绑定了一个事件
    第一次点击之后,li上绑定了2个onclick事件
    第二次之后就有3个了。
    可以把代码改一下。<script>
        var i = 1;
        $(document).ready(function() {
            $('li').click(function() {
                alert('this:' + i);
                i++;
                alert(i);
            })
        })
    </script>
      

  2.   

    $('li').click(function() 

    alert('this:'+i); 
    i++; 
    }) 
    }) 即可
      

  3.   

        不晓得你写这个js的意图,为什么给li绑定了事件后,在事件的处理函数里又对li绑定事件呢。 其实这个在jquery很容易解决。 你可以把事件绑定成一次性事件 one(type,data,function).
      

  4.   

    <script> 
    var i=1; 
    $(document).ready(function() 

    $('li').click(function() 

    alert('this:'+i); 
    i++;
    }) 
    }) 
    </script> 
      

  5.   

    谢谢大家的回复, 我是不明白jquery事件的工作原理,昨天晚上已经查到了资料了, 也找到一种办法和大家共享:内层嵌套改为
    $('li').live('click',function()
    {
    i++; 
    alert('this:'+i);
    return false //必须
    })
    就可以避免冒泡了