jquery.html()是否具有“就绪”或“完成”回调?

Gra*_*les 6 jquery dom

我正在使用DOM插入来生成一些数据输入对话框。我发现在某些浏览器中,尤其是移动浏览器和IE-Mac,.html()调用后不会立即触发操作,大概是因为修改后的DOM尚未准备好。例如:

$.ajax({
    type: "GET",
    url: url,
    dataType: 'html',
    success: function (data, textStatus, jqXHR) {
        $("#theDialog").html(data);

        // hide address
        $("#theDialog #BillingAddress").closest("li").hide();
        ...
Run Code Online (Sandbox Code Playgroud)

这在大多数情况下都有效,但是某些浏览器有时无法隐藏<li>。调试一直很困难,因为进入控制台似乎允许浏览器完成DOM插入,因此在单步执行代码时.hide() 始终有效。

我想我要的是方法的a $("#theDialog").on("ready")或回调.html()。但是那些似乎不存在。

我想到了

  1. 切换到.load(),但最终我将转换为JSONP,我认为不.load()支持该功能?
  2. .hide()DOM和其他DOM操作放入返回的数据中的脚本标签中。

我怀疑#2是推荐的方法,但想先在这里进行健全性检查。有人经历过吗?

非常感谢。

nck*_*lvn 1

虽然我之前的回答有效,但并没有解决你所有的问题。我推荐类似的东西:

var myDiv=document.createElement( 'div' );
myDiv.innerHTML=data;
// now do all of your initializing, passing in myDiv like $( myDiv )
$("#theDialog").html(myDiv.innerHTML)
  .find( '#BillingAddress' )
  .closest("li")
  .hide();
Run Code Online (Sandbox Code Playgroud)

希望这有效!