2016-09-26 30 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 
     } 
    }); 
}