2

なぜ私のコードが機能するのか誰にも教えてもらえますか$(this).parent().hide();(選択した div は非表示になります.post())

$(document).on('submit', '.reply-message-form', function(e) {

        $(this).parent().hide();

        if($(this).children('.post-reply-message-textarea').val() == '')
            return false;

        $.post("<?php echo Yii::app()->createUrl('event/view', array('id'=>Yii::app()->controller->actionParams['id'])); ?>", 
        $(this).serialize(), function(response) {

            var responseObject = jQuery.parseJSON(response);
            // if successful.. process..
            if (responseObject.success == true) {

            } else {
                alert('failed');
            }

        });
        return false;
    }) ;

ただし、成功関数.hide()に配置すると、何も起こりません..?! 内部のコード:.post()

$(document).on('submit', '.reply-message-form', function(e) {

        if($(this).children('.post-reply-message-textarea').val() == '')
            return false;

        $.post("<?php echo Yii::app()->createUrl('event/view', array('id'=>Yii::app()->controller->actionParams['id'])); ?>", 
        $(this).serialize(), function(response) {

            $(this).parent().hide();
            return false;
            var responseObject = jQuery.parseJSON(response);
            // if successful.. process..
            if (responseObject.success == true) {

            } else {
                alert('failed');
            }

        });
        return false;
    }) ;

疑問を解消するために- responseObject.success は == true です(アラートなどで確認しました)。

前もって感謝します!

4

2 に答える 2

5

ポストコールバックで移動するとき、$(this)は同じではないので試してください。

$(document).on('submit', '.reply-message-form', function(e) {
    var elt = $(this).parent();
    if($(this).children('.post-reply-message-textarea').val() == '')
        return false;

    $.post("<?php echo Yii::app()->createUrl('event/view', array('id'=>Yii::app()->controller->actionParams['id'])); ?>", 
    $(this).serialize(), function(response) {

        $(elt).hide();
        return false;
        var responseObject = jQuery.parseJSON(response);
        // if successful.. process..
        if (responseObject.success == true) {

        } else {
            alert('failed');
        }

    });
    return false;
}) ;
于 2012-08-16T17:31:56.290 に答える
1

thisajax呼び出しからのコールバックにあるため、送信されたフォームを表すことはありません。ajax呼び出しを行う前に、これを使用して変数を設定します。

var myForm = this;

次に、成功のコールバックで、$(myForm)

于 2012-08-16T17:33:23.903 に答える