1

我想知道,在 JQuery 中,如何在不使用 id 的情况下从选择器获取元素$('button')<form>我知道如何使用 id 来获取它,但不知何故我需要上面的方法。

我试过alert($('button').parent().prev().get(0).nodeName)弹出窗口FORM,这意味着我到了那里。但是当我使用$('button').parent().prev().get(0).submit()or.serialize()甚至.attr('name')时,它不起作用。

结构如下,我有 10 行<tr>......</tr>.

<table>
    <tr><form name='form' method='POST' autocomplete='on'>
    <td id='df'><button type='button'>Go</button></td>
    <td><input type='reset' value='Clear'/></td>
    <td><input name='date'</td>
    <td><input name='customer'</td>
    .......
    </tr>
</table>

有没有高手可以教教我??谢谢你=)

4

3 回答 3

0

你有这个 HTML:

<table>
<tr><form name='form' method='POST' autocomplete='on'>
<td id='df'><button type='button'>Go</button></td>
.......
</tr>
</table>

这就是你认为它会产生的结果:

<table>
  <tr>
    <form>
      <td>
        <button/>
      </td>
    </form>
  </tr>
</table>

然后$(...).closest('form')可能是所需的遍历方法。

这就是谷歌浏览器产生的;它将表单视为行标题(http://jsfiddle.net/UULtc/):

<table>
  <tr>
    <form/>
    <td>
      <button/>
    </td>
  </tr>
</table>

然后您可以访问表单,$(...).closest('tr').find('form:first')但表单不会包含其预期的输入,所以要小心。

您需要更改您的 HTML(如果只有一行,只需将表格包裹在表格周围)。如果您要坚持使用表格,您可能还需要更改 javascript。这是一个想法(未经打磨,未经测试):

$('table button').click(function(){
  $(this)
    .closest('table')
    .find('tr')
    .not($(this).closest('tr'))
    .find('input')
    .attr('disabled', 'disabled')
  ;
});
于 2012-11-15T04:54:31.590 回答
0

将您的 html 更改为这个,然后尝试。

<form name='form' method='POST' autocomplete='on'>
<table>
    <tr>
       <td id='df'><button type='button'>Go</button></td>
       <td><input type='reset' value='Clear'/></td>
       <td><input name='date'</td>
       <td><input name='customer'</td>
    .......
   </tr>
</table>
</form>
于 2012-11-15T04:55:26.460 回答
0

我认为这是因为该.get()方法返回一个节点,因此您不能在其上调用 jQuery 方法,例如.submit()or .attr()

由于您只获得一个元素,因此我认为您不需要.get()在提交或获取 name 属性之前使用该方法。

$('button').parent().prev().attr('name')实际上给了我你的表格的名字。

于 2012-11-15T05:00:43.860 回答