1

我有一个应用程序,它有一个带有 DIV 的页面,当用户单击我的导航栏的一部分(包含在同一页面中)时,它会更改其内容。

所以这是我的一页应用程序中的 div

<div id="content">
</div>

现在我使用 jQuery 方法用其他 html 文件填充这个 DIV .load()(输入到 .load 方法中的 HTML 文件,我已经剥离了标签等......)

这是我的 JavaScript

$("#content").load("views/"+ pageName + ".html", function(){
// do stuff… like load JavaScript files, etc...
}).fadeIn("fast");  

这工作正常,但是.load()一旦加载到 DOM,使用我希望附加一个函数到页面的内容。

所以说我 .load() 使用上面的 JavaScript 从 HTML 页面中获取以下内容

<p id="newText"> Blah blah blah blah blah blah blah blah blah blah blah</p>

我希望在加载后引发一个事件,但是我不确定我应该将它绑定到什么,比如.live().on()或者.ready()......我在想这样的事情......</p>

$('#newText').load(function() { 
   alert("Handler for .load() called for newText. This is in the DOM and loaded!");
});

有谁知道我应该怎么做?

* 更新 *

好吧,也许我需要解释一下......我从另一个开发人员那里继承了这个应用程序,我认为它是用糟糕的架构/模型构建的。无论如何,加载的页面或视图有很多隐藏的选项卡/切换内容(因此我不喜欢该架构),因此尽管加载了视图/HTML,但在首次加载时,其某些内容可能在 DOM 中不可用。这就是为什么我希望在使用 jQuery Ajax .load() 的基础上检测何时将某些内容加载到 DOM 中

4

2 回答 2

1

使用本机.load()回调:

$('#result').load('ajax/test.html', function() {
  alert('Load was performed.');
});

或者.ajaxStop()注册一个处理程序,以便在所有 Ajax 请求完成时调用。

$('#result').ajaxStop(function() {
    alert('Triggered ajaxStop handler.');
});
于 2012-10-15T14:23:27.103 回答
0

您可以load将加载完成后将执行的函数传递给该函数。

如果提供了“完成”回调,则在执行后处理和 HTML 插入后执行。回调会为 jQuery 集合中的每个元素触发一次,并依次设置为每个 DOM 元素。

$('#result').load('ajax/test.html', function() {
  alert('Load was performed.');
});
于 2012-10-15T14:37:34.887 回答