我正在使用下面的代码遍历我的数据库行并显示信息。每个表单都有一个删除按钮,应该从数据库中删除该行:
function show_scheduled_tweets () {
global $wpdb;
$query = "SELECT * FROM wp_tweettweet";
$results = $wpdb->get_results($query, ARRAY_A);
foreach($results as $result) {
$tweet2 = $result[text];
$recycleOption = $result[recycle];
$id = $result[id];
?>
<form id="tweet-<?php echo $id; ?>" class="tweetclass form-inline" action="" method="post">
<div class="checkbox">
<label>
<input type="checkbox" name="recycle" <?php if($recycleOption == 1){ echo "checked";} ?>>Recycle Tweet?
</label>
</div>
<div class="form-group"><input class="form-control" type="text" name="tweet" value="<?php echo $tweet2; ?>"></div>
<div class="form-group"><input class="form-control" type="text" name="tweetdate"></div>
<input type="hidden" name="id" value="<?php echo $id; ?>">
<div class="form-group"><input class="form-control" type="text" name="timepicker" class="timepicker"/></div>
<input class="tweetsubmit" type="submit" value="Save">
<input class="tweetdelete" type="submit" value="delete">
</form>
<?php
}
}
show_scheduled_tweets();
这是我的Ajax:
jQuery('.tweetdelete').click(function(event) {
event.preventDefault();
var id = jQuery('input[name="id"]').val();
jQuery.ajax({
type: "POST",
url: ajaxurl,
data: {
'action': 'db_tables_delete',
'id': id
},
beforeSend: function() {
alert('before')
},
success: function(){
alert('success')
},
error: function(){
alert('error')
},
});
});
假设我有五行不同的数据显示。现在,无论我点击哪个删除按钮,总是会删除顶行。换句话说,如果单击第3行的删除按钮,将删除第一行。
答案 0 :(得分:3)
根据您当前的代码 Official documents 返回第一个元素的值。查看val()
:
获取匹配元素集中第一个元素的当前值或设置每个匹配元素的值。
您需要根据点击的元素获取id
值,使用 description from documentation
var id = jQuery(this).prevAll('input[name="id"]').val();
<小时/> 或
prevAll()
方法
var id = jQuery(this).siblings('input[name="id"]').val();
<小时/> 或
siblings()
(或 closest()
)和 parent()
var id = jQuery(this).closest('form').find('input[name="id"]').val();
答案 1 :(得分:0)
您对美国的选择并不特定于公司的推文。传递给JS函数的事件将携带一个目标(它将是单击的按钮),如果您将$ id回显到该按钮的数据属性,那么相关的id将在目标中可访问:< / p>
<input data-id="<?php echo $id;?>" class="tweetdelete" type="submit" value="delete">
并在你的JS中:
var id = jQuery(event.target).attr('data-id');