美元上的jQuery单击事件(此)

美元上的jQuery单击事件(此),jquery,Jquery,这是我的测试用例: <!DOCTYPE html> <html> <head> <script src="http://code.jquery.com/jquery-2.0.2.js"></script> <script type="text/javascript"> $(document).ready(function() { $('.sequence').on('clic

这是我的测试用例:

<!DOCTYPE html>
<html>
  <head>
    <script src="http://code.jquery.com/jquery-2.0.2.js"></script>
    <script type="text/javascript">

    $(document).ready(function()
    {
      $('.sequence').on('click', function()
      {
        e = $(this).next(); // div element, DOM element
        e.html(Math.random());

        e.on('click', function()
        {       
          e.html(Math.random());
        });

      });
    });
    </script>
  </head>
  <body>

    <div class="sequence">Sequence 1</div>
    <div>1</div>

    <div class="sequence">Sequence 2</div>
    <div>2</div>

  </body>
</html>

$(文档).ready(函数()
{
$('.sequence')。在('click',function()上
{
e=$(this).next();//div元素,DOM元素
e、 html(Math.random());
e、 在('单击',函数()上)
{       
e、 html(Math.random());
});
});
});
序列1
1.
序列2
2.
上面的代码可以在上进行测试

当我点击div序列1时,下一个第一个有文本“1”的div会得到一些随机值,比如0.312620357578431159。然后我点击div序列2,下一个初始值为“2”的div得到一些随机值,比如0.1628037949583475。到目前为止,一切正常现在当我单击第一个0.3126203578431159时,第二个div 0.16280379495583475会改变值。元素0.31262035757843115应更改值(获取新的随机数,而不是第二个随机数)


这是否意味着不能绑定DOM元素上的事件,只能绑定html元素id、类或其他属性上的事件?不是每个DOM元素都有一些可以使用的ID吗。

范围界定问题。未声明的
e
将成为两个处理程序之间共享的全局文件。要解决此问题,请执行以下操作:

var e = $(this).next();
这将在每个序列处理程序中具有唯一的
e


捕捉得很好,因为我很难找到问题所在。在测试Fabricio Matté之前,我应该先阅读代码。谢谢。我不知道这是范围界定问题。再次感谢。@没问题,请注意,经常将处理程序绑定到另一个事件处理程序中可能效率低下,例如,在本例中,每次单击
.sequence
时,另一个单击处理程序将添加到其下一个元素中,因此当您单击该下一个元素时,它将执行2次随机化。这在一开始是不明显的,但如果您在处理程序中执行繁重的工作,您会注意到性能损失。因此,
e.off('click')。on('click',…)
可以用来防止在这种情况下附加多个处理程序。+1这是一个有效的解决方案,不过如果您对代码的问题发表评论会更好——“给一个人一条鱼,他会吃上一天,教他如何捕鱼,他可能会破坏生态系统”之类的话。谢谢,我会记住的!
  var e = $(this).next(); // div element, DOM element
      e.html(Math.random());          

      e.on('click', function ()
      {
          $(this).html(Math.random());
      });