覆盖tr onclick

时间:2011-05-29 21:38:10

标签: javascript html django-templates

我在django模板中有以下代码:

{% for item in items %}
  <tr onclick="{% url collection:viewitem item_id=item.id %}">
    <td>{{ item.name }}</td>
    <td>{{ item.date }}</td>
    <td>
      <button onclick="{% url collection:edititem item_id=item.id %}" type="button">Edit</button>
      <button onclick="{% url collection:removeitem item_id=item.id %}" type="button">Remove</button>
    </td>
  </tr>
{% endfor %}

但是,按钮onclick事件不起作用,因为tr onclick似乎会覆盖它。我怎样才能防止这种情况发生?

3 个答案:

答案 0 :(得分:18)

请尝试以下方法:

<html>
    <body>
        <table >
            <tr onclick="alert('tr');">
                <td><input type="button" onclick="event.cancelBubble=true;alert('input');"/></td>
            </tr>
        <table>
    </body>
</html>

event.cancelBubble = true 将取消tr点击事件

答案 1 :(得分:0)

使用event.stopPropagation()可以解决问题!

答案 2 :(得分:0)

另一种方法: 为该按钮创建一个单独的行,这样它就不会继承主行的tr onclick事件。像这样:

<tr onclick="doSomething()">
   <td rowspan="2">A</td>
   <td rowspan="2">B</td>
   <td rowspan="2">C</td>
 </tr>
 <tr>
   <td><button type="button">Click</button></td>
 </tr>