1

こんにちは私は私が使用しているワードプレスのためにこのプラグインのバグを修正しようとしています。関数は次のようになります

function alter_ul_post_values(obj, post_id, ul_type) {
    jQuery(obj).find("span").html("..");
    jQuery.ajax({
        type: "POST",
        url: "<?php  echo get_template_directory_uri() ."/includes/ajax_counter.php";?>",
        data: "post_id="+post_id+"&up_type="+ul_type,
        success: function(msg) {
            jQuery(obj).find("span").html(msg);
        }
    });
}

関数を呼び出してクリック数を数えるには、この行が表示されます。

<span class='ul_dcont' onclick=\"alter_ul_post_values(this,'$post_id','wpt2_dislikes')\" >".$text."(<span>".  $dislike_nr ."</span>)</span>

これで、スパン全体で高速クリック(マルチクリック)すると、すべてのクリックがカウントされます。クリック後にCookieが作成され、それ以上クリックをカウントできないため、これを1クリックに制限したいと思います。

ありがとうございました!

4

2 に答える 2

0

さて、ajax_counter.php で、次のような応答 JSON オブジェクトを返すことができますか

response.cookieSet = true/false;
response.msg = your stuff;

Cookieが設定されているかどうかがわかるので、スパンのクリックを無効にすることができます

于 2012-11-02T14:14:39.753 に答える
0

最も簡単な方法は、グローバル変数を作成することです。あまりかわいい方法ではありませんが、シンプルで効果的です。

var isProcessing = false;  // <- 1

function alter_ul_post_values(obj, post_id, ul_type) {
    if (isProcessing)      // <- 2
        return;            // <- 3

    isProcessing = true;   // <- 4
    jQuery(obj).find("span").html("..");
    jQuery.ajax({
        type: "POST",
        url: "<?php  echo get_template_directory_uri() ."/includes/ajax_counter.php";?>",
        data: "post_id="+post_id+"&up_type="+ul_type,
        success: function(msg) {
            jQuery(obj).find("span").html(msg);
            isProcessing = false;  // <- 5
        }
    });
}

もう 1 つのオプションは、 に変更spanし、クリック時に属性をinput type="button"設定し、コールバック時に削除することです。disabled

于 2012-11-02T14:39:32.727 に答える