父母发现或兄弟姐妹或下一个不会工作

时间:2013-11-24 14:25:12

标签: javascript jquery html

点击按钮后,我正试图填写输入值。

我能让这个工作的唯一方法是,如果我定位输入的id,问题是我会多次这样做,所以我想使用parent().find()而不是硬编码id。 / p>

HTML:

<div class="inner-box">
    <div class="mark-as-paid <?php echo 'paid' ?>">Paid</div>
    <input id="mark_as_paid" name="mark_as_paid" type="text" value="<?php echo $final_result[0]; ?>" class="mark_as_paid"></input>
</div>

AJAX:

 $(document).ready(function() {

     $('.mark-as-paid').click(function() {

         var paid_value = 'Paid';

         $.ajax({
             url: 'http://localhost/myshop/owe_money/add_paid.php',
             type: 'post',
             data: {
                 paid_value: paid_value
             },
             beforeSend: function() {
                 $("#ajax-result").html('Before');
             },

             success: function(data) {

                 $("#ajax-result").html(data);


                 $(this).parent().find('.mark_as_paid').val('Paid');



             },
             error: function(xhr, ajaxOptions, thrownError) {
                 $("#ajax-result").html('Error');
             }
         });



     });
 });

我也试过

$(this).parent().siblings('.mark_as_paid').val('Paid');

$(this).parent().siblings('input').val('Paid');

$(this).next('input').val('Paid');

对于兄弟姐妹,我在控制台TypeError: a.parentNode is undefined

中收到错误

唯一似乎有效的是

$('#mark_as_paid').val('Paid');

但这对我没用,因为我将把这个HTML放在for循环中并生成许多输入,所以我想分别针对每一个。

1 个答案:

答案 0 :(得分:1)

试试这个:

$(document).ready(function () {
    $('.mark-as-paid').click(function () {
        var paid_value = 'Paid';
        var $this = $(this);
        $.ajax({
            url: 'http://localhost/myshop/owe_money/add_paid.php',
            type: 'post',
            data: {
                paid_value: paid_value
            },
            beforeSend: function () {
                $("#ajax-result").html('Before');
            },
            success: function (data) {
                $("#ajax-result").html(data);
                $this.parent().find('.mark_as_paid').val('Paid');
            },
            error: function (xhr, ajaxOptions, thrownError) {
                $("#ajax-result").html('Error');
            }
        });
    });
});

我改变了什么:

    ajax调用this内的
  • 不符合您的预期,因此请使用var $this = $(this);将其缓存到外面