当点击使用旋转按钮增加RadNumericTextBox时,我如何在jQuery中获得td span值

时间:2012-04-18 16:23:44

标签: jquery asp.net telerik

我有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());

感谢下面的每个人的帮助。

3 个答案:

答案 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.