我有TABLE,其中有几个CELLS - PRICE,QUANTITY,TOTAL 单击RadNumericTextbox旋转按钮时,id会增加TOTAL单元格。
我有以下
<tr>
<td><a href="#" title="View Product Details"><asp:Label ID="LblTitleTableView" runat="server" Text=""></asp:Label></a></td>
<td><asp:Label ID="LblWeightTableView" runat="server" Text=""></asp:Label></td>
<td>
<asp:Label CssClass="TabPrice" ID="LblProdPriceTV" runat="server" Text=""></asp:Label>
</td>
<td>
<telerik:RadNumericTextBox ID="txtQuantity" CssClass="ProdDropDowns" RegisterWithScriptManager="true" Value="1" MinValue="1" runat="server" Width="50px" Type="Number" ShowSpinButtons="true" >
<NumberFormat DecimalDigits="0" />
<ClientEvents OnValueChanged="TabularProductQtyChanged"></ClientEvents>
</telerik:RadNumericTextBox>
</td>
<td><asp:Label ID="LblTotalTableView" runat="server" Text=""></asp:Label></td>
<td>
<a href="javascript:void(0)">
<asp:Image ID="AddBasketImgTableView" runat="server" ImageUrl="~/clients/14/themes/moredetails.png" AlternateText="Click for More Information" />
</a>
</td>
</tr>
和jQuery
function TabularProductQtyChanged(sender, args) {
var qty = args._initialValue;
}
我可以获得数量,但无法遍历DOM树以获得标签内的价格 - LblProdPriceTV
关于我如何做到这一点的任何想法?
编辑:
在下面的帮助下,我一直在FireBug中挖掘并意识到RadNumericTextBox控件会注入额外的html标记。因此我需要进一步备份DOM树以获得我想要的元素 - 这最终会起作用:
alert($('#' + elementID).parent().parent().parent().parent().parent().parent().parent().parent().find('.ThisIsPrice').find('span').html());
感谢下面的每个人的帮助。
答案 0 :(得分:1)
我不能给你完全正常工作的代码,但这是一个我相信会让你到达的食谱。
function TabularProductQtyChanged(sender, args) {
var qty = args._initialValue;
//Get the client-side id of the element that fired the event
//There might be a method like sender.get_id() or simply a property such as sender.id;
//use firebug and find out.
var elementID = sender.id;
//The cell you need seems to be a span (asp labels are displayed as span elements)
var price = $('#'+elementID).closest('.TabPrice').html();
}
答案 1 :(得分:1)
我无法使用RadNumericTextBox
提供演示,但我可以使用构成控件的相同元素来模拟它。这是一个fiddle来演示。
以下是代码:
<script type="text/javascript">
$(function(){
$("#table1 td input[type='text']").siblings("a").click(function(){
$(this).parents("td").next(".total").css({
width : $(this).hasClass("up") ? "300px" : "200px"
});
});
});
</script>
<table id="table1">
<tr>
<td>
<!-- RadNumericTextBox Start -->
<span>
<span>
<!-- the input -->
<input type="text" id="txt1" />
<!-- spin buttons -->
<a href="#" class="up">Up</a>
<a href="#" class="down">Down</a>
</span>
</span>
<!-- RadNumericTextBox End -->
</td>
<td class="total">TOTALS HERE</td>
</tr>
</table>
答案 2 :(得分:1)
function TabularProductQtyChanged(sender, args) {
var elementID = sender.id;
alert($('#' + elementID).parent().next('td').find('span').html());
}
1. $('#' + elementID) - This means your `RadNumericTextBox`
2. $('#' + elementID).parent() mans the td. This contains `RadNumericTextBox`.
3. $('#' + elementID).parent().next('td').find('span') means the next td which
contains your Label control to traverse.