0

ajax呼び出しが成功すると、各アイテムにreal_priceを入力しようとしています。その機能は、すべてのアイテムのすべてのreal_priceタグに、サービスが取得する最後の値を入力することです。

すべてのアイテムに特定の価格が設定されるように、一度に1つずつ入力するように書き直すにはどうすればよいですか?

<div class="item">
    <p class="price">$388.00</p>
    <p class="part_number">VM2327T23A00T</p>
    <p class="real_price"></p>
</div>
<div class="item">
    <p class="price">$88.00</p>
    <p class="part_number">AA327T23A00T</p>
    <p class="real_price"></p>
</div>
<div class="item">
    <p class="price">$38.00</p>
    <p class="part_number">AA327T23A00T</p>
    <p class="real_price"></p>
</div>

<script>
    jQuery('.part_number').each(function () {

                jQuery.ajax(
                {
                    type: "POST",
                    url: "RealTimePricing.aspx/GetRealPrice",
                    data: "{pmber:' " + SearchSpring.jQuery(this).text() + "', lrice: ' " + jQuery(this).siblings('.price').text() + "'}",
                    contentType: "application/json; charset=utf-8",
                    dataType: "json",
                    async: true,
                    cache: false,
                    success: function (msg) {
                       //NEED TO CHANGE SOMETHING HERE
                       jQuery('.real_price').html(msg.d);
</script>
4

3 に答える 3

1

の最初の引数は$(selector).each(function( index, element)要素のインデックスです。そのインデックスを使用すると、real_priceeq()メソッドを使用して対応する要素をターゲットにできます

jQuery('.part_number').each(function (index) {

                jQuery.ajax(
                {
                    type: "POST",
                    url: "RealTimePricing.aspx/GetRealPrice",
                    data: "{pmber:' " + SearchSpring.jQuery(this).text() + "', lrice: ' " + jQuery(this).siblings('.price').text() + "'}",
                    contentType: "application/json; charset=utf-8",
                    dataType: "json",
                    async: true,
                    cache: false,
                    success: function (msg) {
                       //NEED TO CHANGE SOMETHING HERE
                       jQuery('.real_price').eq(index).html(msg.d);

または、参照する要素を定義して、thisDOM検索が少なくて済むようにすることもできます。

jQuery('.part_number').each(function (index) {
    var $real_price=$(this).next();

     /* ajax */

        success: function(msg){
            $real_price.html( msg.d);
        }
于 2012-06-27T21:22:55.660 に答える
0

そのクラスの兄弟を取得します。

jQuery('.part_number').each(function (i, el) {
//...
    success: function (msg) {
        jQuery(el).siblings('.real_price').html(msg.d);
    }
//...
});
于 2012-06-27T21:20:51.307 に答える
0

提供された情報は少し不足していますが、あなたが正しく理解できれば、それぞれの "real_price" を対応する値で更新したいと考えています。

その仮定に基づいて、以下に沿った何かが機能するはずです:

success: function(msg){
    for(var i=0; msg.length; i++){
        var obj = msg[i];

        $('.item').each(function(k, v){
            if($(this).find('.part_number').text() == obj.part_number){
                $(this).find('.real_price').text(obj.real_price);
            }
        });
    }
}
于 2012-06-27T21:23:12.087 に答える