Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 等待.html()加载完毕,然后执行某些操作_Jquery - Fatal编程技术网

Jquery 等待.html()加载完毕,然后执行某些操作

Jquery 等待.html()加载完毕,然后执行某些操作,jquery,Jquery,我见过一些线程,它们都说html()是一个同步事件,所以您只需要将代码放在它之后,但是我的所有警报都会在显示内容之前出现 我已恢复为警报,因为我想在加载的内容上添加的单击事件不起作用 var URL = '@Url.Content("~/Controller/_Action")'; $.ajax({ url: URL, type: 'POST', success: function (partial

我见过一些线程,它们都说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>
var d1=$.Deferred();
$.when(d1).then(函数(){
警报(“已加载”);
});
d1.解析(LoadSideBarContent(url));
函数LoadSideBarContent(url){
$(“#SideBarContent”).html();
$(“#侧边栏内容”).load(url);
};
因为我使用的是partialview,所以有什么变化吗

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

您看到警报的事实并不意味着内容不在其中/未发送以进行呈现

警报会阻止一切

当您将某些内容写入屏幕时,它不会直接写入屏幕。它被发送以进行渲染(!)。这是一个巨大的差异

无论如何-如果要查看内容是否存在,应执行以下操作:

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

                }                
            }).done(function () {
                console.log('second');
            })
            console.log('third');
此外-不清楚您在以下方面尝试了什么:

d1.resolve(LoadSideBarContent(url));


var d1 = $.Deferred();

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

            d1.resolve(LoadSideBarContent(url)); //<-- with what value you want to resolve  the Deffered object ?

<script type="text/javascript">
    function LoadSideBarContent(url) {
        $("#SideBarContent").html();    //<---What's this ?
        $("#SideBarContent").load(url);
    };
</script>
d1.解析(LoadSideBarContent(url));
var d1=$.Deferred();
$.when(d1).then(函数(){
警报(“已加载”);
});

d1.解析(LoadSideBarContent(url))//必须测试
load(url,complete)
callback?你的意思是像$(“#SideBarContent”).load(url,{id:null/*parameters*/},函数(text,status,xhr){alert('logged');});是的,当侧栏呈现时,我有一个onclick事件应用于partialview中呈现的按钮,但是当单击按钮时,他们单击的事件没有触发,所以我尝试返回跟踪以使用警报,以查看事件调用后的html呈现是否正确。console.log的问题是,它会在局部视图中立即出现,因此我看不到一个在另一个之前工作…@JQuery很抱歉,我没有理解你的意思。请使用jsbin.com将您的问题简化为一个工作示例。我想调用一个局部视图并在侧栏中呈现html。这上面有按钮。渲染完成后,我想应用一个脚本,以便在单击a按钮时触发一些自定义逻辑。但是,jquery没有应用于按钮,所以我认为这是因为脚本是在html之前加载的