2015-09-23 44 views
-1

我需要使用class = ustatus来达到span标记,并获得了id = foo的jQuery对象。在遍历表时获取未定义为span标记的值

<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作为值。我在哪里犯了一个错误?

回答

1

几个问题在你的代码搜索:

1)您需要遍历到TR,而不是TD。如跨度在于选择单选按钮父TD的兄弟TD之一

2)跨度元件具有与其相关联的文本/ html属性而不是value.you需要使用的.text()/.html()代替.val()

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

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

为什么我不能从'td'达到'span'?为什么我需要首先到达'tr',然后才能跨越? –

+0

@SuhailGupta'作为跨度位于所选单选按钮父td'的同胞td之一中 –

2

您需要使用

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

因为,ustatus是你parenent td的兄弟。所以你需要首先遍历父母tr。然后你可以使用find()方法,这会为子元素

+0

它有什么不同?你能否详细说明。 –

+0

我已经在答案中解释了它。你的ustatus不是当前父母td的孩子。 –

0

跨度有没有你需要使用文本()或HTML()

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

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

DEMO

价值

因为你的锚是你需要去2级到tr在这里您可以找到具有类.ustatus,所以你需要添加2 parent()

0

您靶向细胞,然后试图找到td输入()“.ustatus”类的一阶取html内容/值,采用VAL

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

val()用于获取表单字段的值。 使用text()html()分别获取纯文本内容或包含标记。因为我们发现在排.ustatus:first并考虑使用text()内容

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

会工作。