0

立ち往生している問題があります。私は MVC 3 アプリケーションを持っています。このアプリケーションには、調査とトレーニングの概念があります。各トレーニングには 1 つの調査があります。ユーザーが調査を受けられるようにするために、HTML アクションのリンクがクリックされたときにポップアップ ページを開きます。以下は、この DetailsS​​urvey.cshtml のコードです。

  <tr>  <td class="view_detail_label">
                Eğitim Adı
            </td>
            <td>                    
               @Html.ActionLink(
               training.Name.Name, 
               "AddSurvey", 
               new { 
                   employeeId = Model.Id, 
                   trainingId = training.Id 
               },
               new {
                   @class = "addSurvey"
               }
           )
             <div class="result" style="display:none;"></div>
            </td>               
        </tr> 

次に、JavaScript側で、ポップアップを開く次の関数があります。

$(document).ready(function () {
    $('.addSurvey').click(function () {
        $.ajax({
            url: this.href,
            type: 'GET',
            cache: false,
            context: this,
            success: function (result) {
                $(this).next('.result').html(result).dialog({
                    autoOpen: true,
                    title: 'Anket',
                    width: 500,
                    height: 'auto',
                    modal: true
                }); //end of dialog
            } //enf of success function
        }); //end of ajax call
        return false;
    });

});

$(document).delegate('.addSurvey', 'click', function () {
    $.ajax({
        url: this.href,
        type: 'GET',
        cache: false,
        context: this,
        success: function (result) {
            $(this).next('.result').html(result).dialog({
                autoOpen: false,
                title: 'Anket',
                width: 500,
                height: 'auto',
                modal: true
            }); //end of dialog
        } //enf of success function
    }); //end of ajax call
});

1 つ以上の調査リンクが存在する場合があります。ボタンをクリックすると、ポップアップウィンドウが初めて開きますが、ポップアップウィンドウを閉じて再度開いてみると、まったく開きません。新しいタブまたはウィンドウで開くと、それぞれ開きます。イベントのサブスクライブを使用delegateしましたが、機能しません。これは、閉じるボタンで実行されたアクションが原因で、閉じた後に何らかの形で機能を失います。修正はありますか?

4

2 に答える 2

0

私は次のライブ関数を使用して問題を解決しました。

$('a.addSurvey').live('click', function (e) {
        var $this = $(this);
        e.preventDefault();
        $.ajax({
            url: this.href,
            type: 'GET',
            cache: false,
            context: this,
            success: function (result) {
                $(this).next('.result').html(result).dialog({
                    autoOpen: true,
                    title: 'Anket',
                    width: 500,
                    height: 'auto',
                    modal: true,
                    close: function () { console.log("onClose"); $('.surveyTable').load('Home/DetailsSurvey', {id:@Model.Id}); }
                }); //end of dialog
                console.log($(this).next('.result'));
            }, //enf of success function
            complete: function () {
                console.log("Complete");
            },
            error: function () {
                console.log("Error");
            }
        }); //end of ajax call
    });   //end of live
于 2013-05-30T08:16:05.930 に答える