2016-09-26 32 views
1

我有一個按鈕,下面是使用ajax和局部視圖填充的div的視圖。使用jQuery在局部視圖中更改css

這是屬於視圖按鈕的代碼;

$(document).on('click', '.btn-release', function() { 
    StartReleaseVersionEdit(); 
    ReleaseVersionEdit(); 
} 

使用Ajax我可以改變顯示在表格內的數據,這發生在我點擊頁面頂部的按鈕時;

function StartReleaseVersionEdit() { 
    var url = '@Url.Action("ChangelogMavisTabel")'; 
    url = url + '?order=0&paging=1000'; 
    $.ajax({ 
     type: "GET", 
     cache: false, 
     url: url, 
     success: function (data) { 
      $("div#changelog").html(data); 
     } 
    }); 
} 

此代碼完美無缺地工作。一旦我想使用JQuery來改變這個局部視圖內的一個元素的css來將顯示設置爲none,它就會在一瞬間工作,但之後會立即返回到它的默認值。

function ReleaseVersionEdit(){  
    $('.releasebutton').css('display','inline'); 
    // .releasebutton default display=none 
} 

我能做些什麼才能使其正常工作?我無法將JQuery放入分部視圖的代碼中,因爲它是由視圖上的按鈕觸發的。

+1

只需移動ReleaseVersionEdit功能到您的AJAX調用 – CSL

+1

的成功方法Ajax是異步。在加載視圖之前調用'ReleaseVersionEdit()'函數。調用成功回調函數(在$(「div#changelog」)。html(data);'後面) –

回答

1

ReleaseVersionEdit()函數移動到AJAX調用的成功方法中,這樣可以保證僅在部分被加載後調用它。記住AJAX調用是異步 - jQuery.ajax()

$(document).on('click', '.btn-release', function() { 
    StartReleaseVersionEdit(); 
    // ReleaseVersionEdit(); Remove from here as this could execute before the partial is loaded 
} 

function StartReleaseVersionEdit() { 
    var url = '@Url.Action("ChangelogMavisTabel")'; 
    url = url + '?order=0&paging=1000'; 
    $.ajax({ 
     type: "GET", 
     cache: false, 
     url: url, 
     success: function (data) { 
      $("div#changelog").html(data); 
      ReleaseVersionEdit(); // Added here so will always be called after the partial has been loaded 
     } 
    }); 
}