点击按钮后,我正试图填写输入值。
我能让这个工作的唯一方法是,如果我定位输入的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
循环中并生成许多输入,所以我想分别针对每一个。
答案 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');
}
});
});
});
我改变了什么:
this
内的var $this = $(this);
将其缓存到外面