等到.html()已加载然后执行某些操作

时间:2017-04-27 10:50:17

标签: jquery

我见过几个帖子,他们都说html()是一个同步事件,所以你只需要把代码放在它之后,但是在显示内容之前我的所有提醒都会出现。

我已经恢复为警报,因为我想在加载的内容上点击的点击事件无效。

var URL = '@Url.Content("~/Controller/_Action")';

$.ajax({
                url: URL,
                type: 'POST',
                success: function (partialViewResult) {
                    $("#SideBarContent").html(partialViewResult);
                    alert('first')

                }                
            }).done(function () {
                alert('second');
            })
            alert('third');

弹出所有三个警报,然后加载内容。

我也试过了,

var d1 = $.Deferred();

            $.when(d1).then(function () {
                alert('loaded');
            });

            d1.resolve(LoadSideBarContent(url));

<script type="text/javascript">
    function LoadSideBarContent(url) {
        $("#SideBarContent").html();
        $("#SideBarContent").load(url);
    };
</script>

有什么变化,或者这是不同的,因为我使用的是部分视图?

1 个答案:

答案 0 :(得分:2)

  

但我的所有提醒都会在显示内容之前显示

您看到提醒的事实并不意味着内容不在其中/已发送给您。

警报只会阻止一切。

当您在屏幕上写东西时,它不会直接写入屏幕。它被发送以呈现(!)。这有很大的不同。

无论如何 - 如果你想看看内容是否存在,你应该这样做:

Use multipart/form data for POST

另外 - 目前还不清楚你尝试做什么:

$.ajax({
                url: URL,
                type: 'POST',
                success: function (partialViewResult) {
                    $("#SideBarContent").html(partialViewResult);
                    console.log('first')

                }                
            }).done(function () {
                console.log('second');
            })
            console.log('third');