使用jQuery创建可单击的行并排除子元素

时间:2016-04-26 11:58:20

标签: javascript jquery html

< p>我有一个表格,其中包含我想要点击的行,但是我的一个列中还有一个按钮,按下时应该执行其他操作。< / p> < p为H. HTML:其中/ p为H. <预><代码><表>     < tr data-url =" link.html">         < td>某些文字值<输入类型="按钮"值="提交"的onclick =" otherFunction()">< / TD>     < / TR>     < tr data-url =" link2.html">         < td>某些文字值<输入类型="按钮"值="提交"的onclick =" otherFunction()">< / TD>     < / TR>     < tr data-url =" link3.html">         < td>某些文字值<输入类型="按钮"值="提交"的onclick =" otherFunction()">< / TD>     < / TR> < /表> < /代码>< /预> < p为H. jQuery的:其中/ p为H. < pre>< code> $(document).ready(function(){     $('表tr:not(输入)')。click(function(){         var href = $(this).attr(" data-url");         if(href){             //console.log(' remirect to:' + href);             window.location = href;         }     }); }); < /代码>< /预> < p>目前,当我点击按钮时,尽管jQuery选择器不包含任何输入,但页面仍然是重定向的。我使用的是< code>:不是< / code>不正确< / p为H.

2 个答案:

答案 0 :(得分:1)

您可以通过查看event.target属性

来检查点击处理程序是否单击了该按钮



$(document).ready(function() {
  $('table tr').click(function(e) {
    if ($(e.target).is(':button')) {
      snippet.log('button clicked')
      return;
    }

    snippet.log('row clicked');
    var href = $(this).attr("data-url");
    if (href) {
      //console.log('redirect to:' + href);
      window.location = href;
    }
  });
});

<!-- Provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
  <tr data-url="link.html">
    <td>Some Text Value
      <input type="button" value="Submit" onclick="otherFunction()">
    </td>
  </tr>
  <tr data-url="link2.html">
    <td>Some Text Value
      <input type="button" value="Submit" onclick="otherFunction()">
    </td>
  </tr>
  <tr data-url="link3.html">
    <td>Some Text Value
      <input type="button" value="Submit" onclick="otherFunction()">
    </td>
  </tr>
</table>
&#13;
&#13;
&#13;

答案 1 :(得分:1)

您必须查看传递给target函数的event的{​​{1}}。

这是一个有效的例子:

&#13;
&#13;
click
&#13;
$(document).ready(function(){
  $(".clickablerow").click(function(event) {
    if(event.target.tagName != "INPUT"){
      var href = $(this).attr("data-url");
      if(href) {
        //console.log('redirect to:' + href);
        window.location = href;
      }
    }
  });
});

function otherFunction() {
  alert("other function");
}
&#13;
&#13;
&#13;