在jquery中选择更复杂的元素路径

时间:2017-03-13 08:35:10

标签: javascript jquery

我有一个代码可以获取input之一,以便在选择时显示/隐藏某些信息。

    $("input[name$='payment']").click(function() {

一切正常,但是,我的网站允许用户点击整个table元素来勾选输入。 如果我的代码如下所示,我如何告诉jQuery选择整个元素,而不仅仅是小输入代码:

<table cellspacing="0">
              <tbody><tr class="moduleRowSelected" onmouseover="rowOverEffect(this)"">
                <td width="10"><img src="cat/pixel_trans.gif" width="10"></td>
                <td class="main"><b>Name of payment</b></td>
           <td class="main"><input name="payment" value="importantpaymentwithexternalinformation" type="radio">                    </td>

1 个答案:

答案 0 :(得分:0)

您可以使用.closest("table")

定位包含这些元素的表格
$("input[name$='payment']").closest("table").click(function() {
// ------------------------^^^^^^^^^^^^^^^^^

click处理程序中,this将引用该表。由于点击表格的用户可能无法点击单选按钮,因此您需要包含代码来执行此操作:

$(this).find("input[name$='payment']").prop("checked", true);

示例:

&#13;
&#13;
$("input[name$='payment']").closest("table").click(function() {
  $(this).find("input[name$='payment']").prop("checked", true);
});
&#13;
<table cellspacing="0">
  <tbody>
    <tr class="moduleRowSelected">
      <td width="10"><img src="cat/pixel_trans.gif" width="10"></td>
      <td class="main"><b>Name of payment</b></td>
      <td class="main"><input name="payment" value="type1" type="radio"> Type 1</td>
    </tr>
  </tbody>
</table>
<table cellspacing="0">
  <tbody>
    <tr class="moduleRowSelected">
      <td width="10"><img src="cat/pixel_trans.gif" width="10"></td>
      <td class="main"><b>Name of payment</b></td>
      <td class="main"><input name="payment" value="type2" type="radio"> Type 2</td>
    </tr>
  </tbody>
</table>
<table cellspacing="0">
  <tbody>
    <tr class="moduleRowSelected">
      <td width="10"><img src="cat/pixel_trans.gif" width="10"></td>
      <td class="main"><b>Name of payment</b></td>
      <td class="main"><input name="payment" value="type3" type="radio"> Type 3</td>
    </tr>
  </tbody>
</table>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;
&#13;
&#13;