麻烦地用jQuery选择我的ListView的兄弟值。这是我正在尝试的jQuery语法,但是当我在firebug中调试到控制台时,它表示一切都未定义但是当我查看html时我可以看到它们中的值,所以我知道它们只是不选择它们。它是在Update按钮的click事件上调用的,我需要抓住listview中不同行的兄弟姐妹,为我正在更新的行。
$('.nbr')
.click(function){
var newaddr = $(this).siblings('#addr').val();
var originaladdr = $(this).siblings('#addr').attr('data-Value');
var newplace = $(this).siblings('#place').val();
var originalplace = $(this).siblings('#place').attr('data-Value');
的ListView:
<asp:ListView runat="server" id="ListView1" >
<LayoutTemplate>
<table id="tablesorter" style="border:solid 1px black;width:55%;">
<thead>
<tr>
<th>
<a href="#">Addr</a>
</th>
<th>
<a href="#">Place</a>
</th>
</tr>
</thead>
<tbody>
<tr id="itemPlaceholder" runat="server" />
</tbody>
<tfoot>
</tfoot>
</table>
</LayoutTemplate>
<ItemTemplate>
<tr>
<td>
<input maxlength="3" size="4" type="text" id="addr" data-Value="" value="<%# Eval("addr")%>" />
<input maxlength="4" size="4" type="text" id="place" data-Value="" value="<%# Eval("place")%>" />
</td>
<td>
<input type="button" class="nbr" id="btn_update" value="Update" />
</td>
</tr>
</ItemTemplate>
</asp:ListView>
答案 0 :(得分:0)
#addr
和#place
的兄弟姐妹唯一的事情是#addr
和#place
。他们没有其他兄弟姐妹。所以你的逻辑错了。你想从中选择什么?
此外,由于您似乎正在使用可能会多次复制的模板,因此您将拥有多个具有相同id
的元素。改为使用类。
最后,另一个提示是,缓存你的jQuery对象,而不是重新创建相同的对象。
修改:根据您的更新,您的问题是您的按钮nbr
是堂兄,而不是#addr
和#place
的兄弟。你需要做的是从nbr
导航到它的父td
,然后从那里导航到它的兄弟td
然后再转到它的孩子。
类似的东西:
$(this).parent().prev().children("#addr");
或更完整(在用[{1}}代替id
之后):
class