在Ajax成功上设置Html

时间:2012-06-27 15:11:28

标签: javascript jquery

我的html看起来像这样有几个项目

<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>

等。

我正在尝试遍历每个项目并将其“real_price”设置为值,这是我的代码:

  jQuery('.part_number').each(function () {
                    parts.push(SearchSpring.jQuery(this).text());

                    SearchSpring.jQuery.ajax(
            {
                type: "POST",
                url: "RealTimePricing.aspx/TestInteraction",
                data: "{param1:'brit', param2: 'nick'}",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                async: true,
                cache: false,
                success: function (msg) {                 
                   jQuery("#real_price").html(msg.d);

                }
            }
        );
      });

                }

我在成功时获得了正确的“msg”(我可以在firebug中看到这个),但它从不设置html,也只是每次迭代一次..

我不确定为什么这不设置html

  jQuery("#real_price").html(msg.d);

为什么我的代码没有循环遍历html中的所有“.part_number”标签?

3 个答案:

答案 0 :(得分:1)

class="real_price"暗示.real_price,但你必须确保你也正在更新正确的元素(该类有几个元素)。我建议使用.next作为要更新的元素,在每个.part_number元素旁边:

jQuery(".part_number").each(function() {
   var $elem = jQuery(this).next(".real_price");

然后:

$elem.html(msg.d);

答案 1 :(得分:0)

使用.符号代替#id保留用于查询{{1}}。此外,您应该以访问单个价格的方式执行此操作,否则它将更新所有元素,如下所述。

答案 2 :(得分:0)

您正在尝试更新您的html中不存在的#real_price。您可以使用以下内容:

jQuery(this).parent(".item").find(".real_price").html( msg.d );更新.item的另一个子.real_price