我正在使用 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();
...
这在大多数情况下都有效,但某些浏览器有时无法隐藏指示的<li>
. 调试也很有挑战性,因为进入控制台似乎允许浏览器完成 DOM 插入,因此在单步执行代码时.hide()
总是有效。
我想我所追求的是方法的一个$("#theDialog").on("ready")
或一个回调.html()
。但那些似乎不存在。
我想过
- 切换到
.load()
,但最终我将转换为 JSONP 并且我认为不.load()
支持? - 将
.hide()
DOM 操作和其他 DOM 操作放在返回数据中的脚本标记中。
我怀疑#2 是推荐的方法,但想先在这里进行健全性检查。有没有人经历过这个?
非常感谢。