Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/425.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何对尚不存在的DOM元素调用Jquery方法?_Javascript_Jquery_Javascript Events_Facebox - Fatal编程技术网

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问题或什么。。