无法控制使用.load动态添加的内容


Cannot control content added dynamically with .load

我有使用AJAX调用加载的内容,并在ul父级中显示HTML(由divs等组成(。

现在,我已经编写了一系列.click.hover函数,它们可以完美地处理所有事情,一直到动态加载内容的地方,然后根本不处理动态加载的内容。

我已经检查了我所有的div ID,以确保它们是正确的。有没有一种方法可以控制AJAX加载的材料?

问题是您的代码只使用当时存在的元素运行,而不使用"future"元素。你有两个选择:

1( 在加载ajax内容后,重新运行"onload"javascript代码(已应用于文档就绪(。

2( 使用.live()而不是.bind():所以改变

$('#selector').bind('click', function(){..

$('#selector').live('click',function(){..

不同之处在于,live现在和将来都使用与选择器匹配的元素,而bind只在调用选择器时使用与选择器相匹配的元素。

希望这能有所帮助。干杯

您的事件处理程序绑定到设置时存在的元素。

将处理程序重新连接到新的、动态创建的材质,或者使用livedelegate;这些"为现在和将来与当前选择器匹配的所有元素的事件附加一个处理程序"。

您应该在加载内容后重新绑定事件,或者使用

.delegate(api(将事件自动附加到新加载的元素。

类似于:

$("ul#container").delegate("li", "hover", function(){
    doStuff();
});
$("ul#container").delegate("li", "click", function(){
    doOtherStuff();
});

更改

$('a#whatever').click(function(){....

$('a#whatever').live('click',function(){....