1

計算値を置き換えるのに少し苦労しています。この関数では、非表示のテキスト ボックスの値を使用して割引を計算し、元の価格を新しい割引値に置き換えようとしています。割引と値を取得できますが、値をdivに置き換えることはできません..「最も近い」が機能していないと考えています...ここで間違っていることを考えてください。

$(document).ready(function() {
    $("#cal_discount").click(function() {

        $(".price_val").each(function() {
            var Percent = $('#percent_dis').val();
            var price = $(this).val();
            var existing = $(this).closest('.existing_price');
            var new_price = (price - (price * (Percent / 100)));
            var formatted = new_price.toFixed(2);
            existing.text(formatted);
        });
    });
});

<div class="existing_price" style="float:left">22</div>
<input  type="hidden"  class="price_val" value="22" />

<input name="percent_dis" type="text" id="percent_dis" size="3" /> %      <img src="admin/images/btn/cal_discount.png" width="97" height="17" style="float:left; margin-right:10px; margin-top:5px; cursor:pointer" id="cal_discount" />   
4

3 に答える 3

3

問題は</div>、22 の後にあるべきではないということです..

.closest()DOM階層を上に移動します..上は先祖を意味します...

そのため、セレクターに一致する最初の祖先を探します..

は の.price_val中に.existing_priceないため、見つかりません。

コードを次のように変更する

<div class="existing_price" style="float:left">
  <span class="value">22</span>
  <input  type="hidden"  class="price_val" value="22" />
</div>

とjs

    $(".price_val").each(function() {
        var Percent = $('#percent_dis').val();
        var price = $(this).val();
        var existing = $(this).siblings('.value');
        var new_price = (price - (price * (Percent / 100)));
        var formatted = new_price.toFixed(2);
        existing.text(formatted);
    });

問題を修正します。

于 2012-04-27T19:45:39.740 に答える
2

prev.prev要素が常にdiv.existing_price

試す

var existing = $(this).prev(); //should return div for your existing markup
于 2012-04-27T19:47:27.767 に答える
0

Closest は、要素が兄弟ではなく子孫である場合にのみ機能します -prev代わりに使用してください。

于 2012-04-27T19:47:52.163 に答える