遍历表时,将undefined作为span标记的值

时间:2015-09-23 08:16:12

标签: jquery dom-traversal jquery-traversing

我需要使用class = ustatus到达span标记,并为id = foo获取jQuery对象。

<tr>
  <td> <input name = 'user' type='radio 'id='foo'/> </td>
  <td> <input id='boo'/> </td>
  <td> <input id='too'/> </td>
  <td> <input id='yoo'/> </td>
  <td> <span class='ustatus'> Active </span> </td>
</tr>

我当时想:

$("input[name = 'user']:checked").closest('td').find('.ustatus').first().val()

但获取undefined作为值。我在哪里弄错了?

4 个答案:

答案 0 :(得分:2)

您需要使用

$("input[name = 'user']:checked").closest('tr').find('.ustatus:first').text()

因为,ustatus是您的嫌疑人td的兄弟姐妹。因此,您需要首先遍历父tr。然后,您可以使用find()方法,该方法将搜索子元素

答案 1 :(得分:2)

您的代码中的几个问题:

1)你需要遍历tr而不是td。 as span位于所选单选按钮parent td

的兄弟td之一

2)span元素具有与之关联的text / html属性而非value.you需要使用.text() / .html()而不是.val()

3)因为tr中只有一个ustatus元素,所以你不需要.first()选择器。

$("input[name='user']:checked").closest('tr').find('.ustatus').text()

答案 2 :(得分:0)

  

span没有值,您需要使用text()或html()

var text = $("input[name = 'user']:checked").parent().parent().find('.ustatus').text();

var html = $("input[name = 'user']:checked").parent().parent().find('.ustatus').html() ;

DEMO

由于您的锚点是输入,因此您需要升级到tr,在那里您可以找到具有类td的{​​{1}},因此您需要添加2 {{1} }}

答案 3 :(得分:0)

您正在定位单元格,然后尝试使用val()

找到第一个订单的“.ustatus”类以获取html内容/值
$("input[name = 'user']:checked").closest('td').find('.ustatus').first().val() 

val()用于获取表单字段的值。 使用text()html()分别获取纯文本内容或包含标签。

$("input[name ='user']:checked").closest('tr').find('.ustatus:first').text()

可行,因为我们在行中找到.ustatus:first并使用text()获取内容。

相关问题