$(this)上的jQuery click事件

bro*_*and 0 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('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>
Run Code Online (Sandbox Code Playgroud)

上层代码可以在http://jsfiddle.net/3LrXZ上测试.

当我点击div 序列1时,下一个首先有文本'1'的div得到一些随机值让我们说0.3126203578431159.然后我点击div 序列2和最初有值'2'的下一个div得到一些随机值让我们说0.16280379495583475.直到现在一切正常.现在当我点击第一个0.3126203578431159时,第二个div 0.16280379495583475会改变值.元素0.312620357843115应该更改值(获取新的随机值,而不是第二个).

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

Fab*_*tté 7

范围问题.您的未声明e成为两个处理程序之间共享的全局.要解决这个问题:

var e = $(this).next();
Run Code Online (Sandbox Code Playgroud)

这将e在每个序列的处理程序中具有唯一性.

Demo

  • 好抓,因为我很难找到问题所在.我应该在测试之前先阅读代码 (2认同)