1

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

谢谢大家在下面的帮助。

4

3 回答 3

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();
}
于 2012-04-18T16:37:18.207 回答
1

我无法使用 提供演示RadNumericTextBox,但我可以使用构成控件的相同元素来模拟它。这是一个要演示的小提琴。

这是代码:

<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>​
于 2012-04-18T16:38:47.207 回答
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.
于 2012-04-18T17:46:42.917 回答