1

私はテーブルを持っており、その中にいくつかのセルがあります-価格、数量、合計RadNumericTextboxのスピンボタンをクリックすると、合計セルを増やすことができます。

私は以下を持っています

   <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

これをどのように行うことができるかについてのアイデアはありますか?

編集:

以下の助けを借りて、iveは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 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 に答える
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 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 に答える