1

我正在尝试使用 jQuery load() 函数将不同文件中的内容加载到当前文件中的 div 元素中。没什么特别的,只是加载它,就是这样。但是,加载文件中包含的链接变为“禁用”,您无法单击它们,并且 :hover 之类的伪类似乎也被排除在外。有针对这个的解决方法吗?

$(document).ready(function() {
    $("div.content").load("content.html");
});

假设 content.html 只包含这一行:

<a href="somelink.html">xxx</a>

当它被加载到<div class="content">链接是不可点击的。它根据 css 着色,但是 :hover 效果不起作用,并且它的行为类似于普通文本 - 而不是链接。这是一个问题,因为我尝试加载的内容有几个链接,并且在加载()之后它们都不起作用。

4

1 回答 1

0

我相信你的问题是:

  • 您使用 $('div.content').load('content.html') 发送内容请求以(稍后)将其插入 DOM。
  • 然后,您运行一些代码来使用 $(document).click、$(document).bind 等为节点指定处理程序 - 但此代码在新节点添加到 DOM 之前运行。
  • 然后在 .load 调用完成时添加新节点。
  • 您在所有原始节点上定义的行为不会在节点上遵循。

如果这是您所描述的问题 - 那么您需要在创建新节点后将所有相同的绑定添加到新节点。

即您需要提供一个回调来将绑定添加到新元素:

function on_data_loaded() {
    $('div.content ...').hover(.....);
    // etc.
}
$('div.content').load('content.html', null, onloaded);

(请注意,这不是一种特别干净的方法,但它应该解释需要做什么)。

于 2012-09-14T16:24:48.500 回答