我正在向页面上的每个 list_item 添加一个按钮。生成的按钮具有正确的 ID。并且按钮值会发生应有的变化 - 如警报中所示。
但是单击一次按钮,警报触发的次数与页面上的按钮次数一样多。警报始终显示相同(且正确)的按钮 ID。如果没有警报,如果同时单击其他按钮,这会导致按钮值来回切换。
生成按钮:
function create_saved_message_button( ) {
$button_label = "Save";
?>
<td width="15%" class="thread-options">
<input type="button" class="savedbutton" value = "<?php echo $button_label ?>" id = "<?php echo message_thread_id(); ?>" />
</td>
<?php
}
阿贾克斯:
function saved_message_button_javascript() {
?>
<script type="text/javascript" >
jQuery(document).ready(function($) {
$('.savedbutton').click(function(event){
event.preventDefault();
var button = $(this);
var butt_txt = $(button).attr('value');
alert($(button).attr("id"));
$(button).attr({'disabled': true});
var data = {
action: 'saved_button_clicked',
};
$.get(ajaxurl, data, function(response) {
if(butt_txt == 'Save') {
$(button).attr('value', 'Un-Save');
}
else {
$(button).attr('value', 'Save');
}
});
$(button).attr({'disabled': false});
return false;
});
});
</script>
<?php
}
有什么办法可以阻止多个警报?我认为这将解决价值转换问题。
然后我只需要将按钮 id 传递给 php 函数 saved_button_clicked
add_actions:
add_action( 'messages_inbox_list_item', 'create_saved_message_button', 1 );
//this was the problem
//add_action('messages_inbox_list_item', 'saved_message_button_javascript');
//the solution - use this instead
add_action('after_member_messages_threads', 'saved_message_button_javascript');
add_action('wp_ajax_saved_button_clicked', 'process_save_button_clicked');