使用jQuery和下面的HTML,有人可以建议从 $(“输入”)中检索 span.street_address_display 的最佳(即最有效)方式 。感谢。
<tr>
<th class="address_name" scope="row">Work</th>
<td class="address_entry">
<span class="street_address_display">123456 ABC Street</span>
<span class="city_display">Vancouver</span>,
<span class="state_province_display">British Columbia</span>
<span class="country_display">Canada</span>
<span class="post_code_display">V1A2B3</span>
</td>
<td class="address_select"><input value="address_2" name="address_select" type="radio" /></td>
</tr>
答案 0 :(得分:3)
var $input = $('input');
var street_address_display = $input.closest('td').prev().find('span.street_address_display');
或者,如果表格行中没有其他此类跨度,
var street_address_display = $input.closest('tr').find('span.street_address_display');
答案 1 :(得分:3)
如果你在一个函数中调用它,this
的范围是输入(否则你需要用抓取输入的东西替换this
),比如
$(this).parent().prev().children('span.street_address_display')
应该带你到跨度。就效率而言,我会说你会注意到最大的差异就是IE,或者不能用标签或类抓取的地方。
请注意,这是在进行直接查找,因此在.parent()
进行一级升级,而不是直到找到td
,之前为td
,然后才会直接查找td
span
street_address_display
并且具有班级{{1}}。这不会刮得太深,所以你会失去灵活性,但更少的查找转化为更快。如果值得的话,这取决于你。
答案 2 :(得分:2)
您也可以这样做:
$(".street_address_display",$("input").parents("tr"));
请注意,它只会给你一个结果,所以如果你有多个输入,你需要定义你所追求的那个,除非你可以使用this
。
例如:
$(".street_address_display",$("input:first").parents("tr"))
或
$(".street_address_display",$(this).parents("tr"))
答案 3 :(得分:1)
我不太确定你是否想要获得输入的值,类“street_address_display”的值,但这分别适用于每个:
$('.street_address_display').html();
$('input').val();
答案 4 :(得分:1)
这有效:
var $my_span = $('input[name="address_select"]').parent().prev().children().first()