0

我有一个 Rails 应用程序,我正在处理我无法理解的表现行为。我有一个 html 文件:

<h1>Hello World</h1>
  <table>
    <tr>
        <td>Hello</td>
    </tr>
    <tr>
        <td>Hello</td>
    </tr>
    <tr>
        <td>Hello</td>
    </tr>
    <tr>
        <td>Hello</td>
    </tr>
</table>

然后,当有人单击表中的一行时,我会点击一个 javascript(jquery) 文件。

$(document).ready(function(){
  $("tr", "table").click(function(){
    console.log("TEST");
  });
});

每次我点击表格中的一行,该函数都会被调用 2 次。我在控制台中两次得到“测试”。我是 jquery 和 rails 的新手,所以我知道我缺少一些简单的东西。有人请告诉我我做错了什么。

4

3 回答 3

2

它正在计算“tr”和“table”的点击次数

尝试

$(document).ready(function(){
  $("tr").click(function(){
    console.log("TEST");
  });
});
于 2012-10-20T21:00:27.400 回答
2

正如伙计们所说,它正在发生,因为每个 tr 都在一张桌子内,所以这是一个正确的行为。如果你想避免它,我相信阻止事件传播会起作用:

$(document).ready(function(){
  $("tr", "table").click(function(e){
    e.stopPropagation();
    console.log("TEST");
  });
});
于 2012-10-20T21:02:19.503 回答
0

表点击被触发点击,tr点击试试这个

$(document).ready(function(){
  $("tr").click(function(){
    console.log("TEST");
  });
});

you don't need a click event on table , unless you want to be able to click in the table- but not in a row , that doesn't sound right

于 2012-10-20T21:02:35.730 回答