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_price使用该索引可以使用 eq() 方法定位相应的元素

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

this或者可以在引用中定义需要较少 DOM 搜索的元素

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