1

ページ上のすべての list_item にボタンを追加しています。ボタンが正しい ID で生成されます。ボタンの値は、アラートに示されているように、必要に応じて変更されます。

ただし、ボタンを 1 回クリックすると、ページ上のボタンの数だけアラートが発生します。アラートには、常に同じ (そして正しい) ボタン 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');
4

1 に答える 1

1

多分私は何かを誤解しました。5つのボタンとJavaScriptを含むHTMLを作成しましたが、説明した動作が見つかりませんでした。ここを見てください。

于 2012-05-10T18:02:41.553 に答える