1

こんにちは、ajax 呼び出しの後にクラスを追加する必要があるコードを作成しました。コードは正しいと確信していますが、まだクラスが追加されていません。コード内の他のすべてが機能するので、それは本当に奇妙で、addClassのコードが正しいと確信しています。また、コンソールにエラーがないかチェックしましたが、エラーはありません。ここに私のコードがあります

$(document).on('click', '.miclickks', function(event) {
 event.preventDefault();

var for_uid    = $(this).parents("li").attr('data');
var for_name   = $(this).parents("li").attr('unme');
var for_pic    = $(this).parents("li").attr('upic');
var owner_uid  = $('.row-fluid').attr('uid');
var owner_name = $('.row-fluid').attr('usnm');
var owner_pic  = $('.row-fluid').attr('usp');
var type       = "kiss";

var dataString = "type=" + type + "&for_uid=" + for_uid + "&for_name=" + for_name + "&for_pic=" + for_pic + "&owner_uid=" + owner_uid + "&owner_pic=" + owner_pic + "&owner_name=" + owner_name; 

        $.ajax({
            type: "POST",
            url: "include/ajax.php",
            data: dataString,
            success: function (html) {
            if(html=="300")
            {
            $('#myModal .modal-body p').html("Error Please Try Again.");

            $('#myModal').modal('show');
            }
            else
            {
            $(this).addClass('active');     


            }
            }
        });



});
4

4 に答える 4

6

ふたつのやり方:

最初

var that = this;
$.ajax({
    type: "POST",
    url: "include/ajax.php",
    data: dataString,
    success: function (html) {
        if (html == "300") {
            $('#myModal .modal-body p').html("Error Please Try Again.");
            $('#myModal').modal('show');
        } else {
            $(that).addClass('active');
        }
    }
});

2 番目(contextオプションを使用):

$.ajax({
    type: "POST",
    url: "include/ajax.php",
    data: dataString,
    context: this,
    success: function (html) {
        if (html == "300") {
            $('#myModal .modal-body p').html("Error Please Try Again.");
            $('#myModal').modal('show');
        } else {
            $(this).addClass('active');
        }
    }
});
于 2013-05-19T11:38:06.420 に答える
2

これを試して -

var $p = $(this);
$.ajax({
    type: "POST",
    url: "include/ajax.php",
    data: dataString,
    success: function (html) {
        if (html == "300") {
            $('#myModal .modal-body p').html("Error Please Try Again.");

            $('#myModal').modal('show');
        } else {
            $p.addClass('active');
        }
    }
});
于 2013-05-19T11:37:00.413 に答える
1

その理由は、this内部success()が XHR オブジェクトであり、クリックされた要素ではないためです。このオプションを使用しcontextて、任意の値に強制することができます。

例:

$.ajax({
    context: this, // pass the clicked element via context
    ...
    success: function() {
       ...
       $(this).addClass('active'); // now this refers to the clicked element
    }
});
于 2013-05-19T11:39:09.060 に答える
0

多分私は何か間違ったことを言っていて、誰かが修正するでしょうが、エラーはこの命令にあると思います$(this).addClass('active'); :アクティブ

于 2013-05-19T11:38:52.450 に答える