0

理解できない動作を示すレールアプリケーションに取り組んでいます。私は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 really) ファイルがあります。

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

テーブルの行をクリックするたびに、関数が 2 回呼び出されます。コンソールに '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");
  });
});

テーブル内でクリックできるようにしたい場合を除き、 table でクリックイベントは必要ありませんが、行ではクリックできません。それは正しく聞こえません

于 2012-10-20T21:02:35.730 に答える