2014-09-30 62 views
0

我想淡出一個包含部分視圖中的html的div,當用戶點擊一個鏈接並淡入新抓取的局部視圖。我遇到的問題是,有時我的視圖會在原始局部視圖淡出之前被提取,所以我最終看到局部視圖切換出來,淡出,然後再次淡入。有沒有辦法延遲ajax請求,直到淡出完成?延遲ajax OnBegin直到淡出DOM - MVC5

這是我試圖實現的操作順序。
用戶點擊鏈接>局部視圖甲淡出>新局部視圖是通過AJAX取出>局部視圖乙變淡英寸

這就是有時

用戶點擊鏈接發生>局部視圖A開始淡出,但部分視圖B在它完成褪色之前進入>局部視圖B淡出>局部視圖B再次淡入。

@Ajax.ActionLink("Me", "ManageUserAccount", null, new AjaxOptions 
            { 
             HttpMethod = "GET", 
             UpdateTargetId = "ajax-update", 
             InsertionMode = InsertionMode.Replace, 
             OnBegin = "ajaxBegin", 
             OnSuccess = "ajaxSuccess" 
            }, new { @class = "active" })  


@Ajax.ActionLink("Alerts", "ManageAlerts", null, new AjaxOptions 
           { 
            HttpMethod = "GET", 
            UpdateTargetId = "ajax-update", 
            InsertionMode = InsertionMode.Replace, 
            OnBegin = "ajaxBegin", 
            OnSuccess = "ajaxSuccess" 
           }, new { @class = "active" }) 



<div id="ajax-update"> 
      @Html.Action("ManageUserAccount") 
     </div> 


<script type="text/javascript"> 
    function ajaxSuccess() { 
     $('#ajax-update').fadeIn(); 
     //sometimes the new partial view is returned before this even finishes its job 
    } 
    function ajaxBegin() { 
     $('#ajax-update').fadeOut(); 
    } 

回答

0

我做一個非常類似的功能......但我用得到,完成和效果。和工作!我用來製作一個沒有回傳的複雜網站,改變部分是在菜單上模擬改變頁面

$(".menu-button").click(function (e) { 
    var id = e.target.id; 
    var urlID = document.URL.split('#')[1]; 
    if (id != urlID) { 
     location.hash = id; 
     changepartial(id); 
    } 
}); 

    function changepartial(id) 
    { 
     var path = "../home/"+id; 
     getOut(); 
     $.get(path).done(function (result) { 
    //done is for wait get result after make the next step. 

      $("#Contenant").html(result); 
      getIn(); 
     }); 
    } 

    function getOut() { 
     $("#Contenant").effect('drop', { direction: 'left' }, 100); 
    } 

    function getIn() { 
     $("#Contenant").effect('slide', { direction: 'right' }, 1000); 
    } 
+0

Pablote。這看起來不像它的MVC。如果我不夠清楚,我很抱歉。讓我更新我的標題。 – Adrian 2014-09-30 03:48:19

+0

是的,我使用mvc5和jquery,以及這段代碼全部在javascript路徑中,是你的局部視圖的地址前:「../shared/_news」 – Pablote 2014-09-30 03:56:26

+0

我忘記了控制器我使用這個結構[HttpGet] public ActionResult Fan() { ViewBag.Message =「您的應用程序描述頁面。」; return PartialView(「_ Fan」); } – Pablote 2014-09-30 04:03:54