Javascript 如何对尚不存在的DOM元素调用Jquery方法?
我想使用一些自动完成链接,这些链接在我的页面上还不存在 您通常使用以下方式激活它:Javascript 如何对尚不存在的DOM元素调用Jquery方法?,javascript,jquery,javascript-events,facebox,Javascript,Jquery,Javascript Events,Facebox,我想使用一些自动完成链接,这些链接在我的页面上还不存在 您通常使用以下方式激活它: $(document).ready(function($) { $('a[rel*=facebox]').facebox() }) 由于a链接在页面加载时并不都在页面上,我通常会使用.live或.delegate方法绑定到事件,但在这种情况下,一旦该元素出现在页面上,我将绑定到什么“事件”,然后对其调用该方法 还是我完全走错了路 谢谢没有这样的活动 在向页面添加元素时,需要调用插件 // creat
$(document).ready(function($) {
$('a[rel*=facebox]').facebox()
})
由于a链接在页面加载时并不都在页面上,我通常会使用.live或.delegate方法绑定到事件,但在这种情况下,一旦该元素出现在页面上,我将绑定到什么“事件”,然后对其调用该方法
还是我完全走错了路
谢谢没有这样的活动 在向页面添加元素时,需要调用插件
// create a new <a>, append it, and call the plugin against it.
$('<a>',{rel:"facebox"}).appendTo('body').facebox();
本例创建了一个新元素。如果您从AJAX响应中获得了一些元素,请针对这些元素调用它:
var elems = $( response );
elems.filter( 'a[rel="facebox"]' ).facebox(); // if the <a> is at the top level
elems.find( 'a[rel="facebox"]' ).facebox(); // if the <a> is nested
elems.appendTo('body');
您只需将此调用添加到链接中加载的ajax即可。尚未测试:
$(document).ready(function($) {
$(document).bind('change', docChanged) ;
})
function docChanged()
{
if ($('a[rel*=facebox][class!="faceboxed"]').length > 0)
{
$('a[rel*=facebox][class!="faceboxed"]').addClass("faceboxed").facebox();
}
}
这完全可以使用.live函数实现。您只需要使用DomainNodeInserted事件
$(document).ready(function() {
$("a[rel*=facebox]").live("DOMNodeInserted", function() {
$(this).facebox();
});
});
感谢您的详细回复!我希望有办法解决这个问题,但我想not@Noli:不客气。有一个名为livequery的插件可以监视DOM的更改,但据我所知,它非常需要资源。你最好还是手工做。真的吗!?我对文档中的事件更改有点怀疑,但如果您说它正在工作,我为您感到高兴!是的,我甚至不知道它的存在。谢谢你的提示!关于资源,您可以检查文档中某个特定元素的更改,因为这对于浏览器来说可能是一项巨大的工作……这看起来不错。。但我很难让它在Chrome上运行。。不确定是否存在Chrome/Jquery问题或什么。。