我想将this lightbox plugin用于某些自动填充链接,这些链接在我的网页上尚不存在。
您通常使用以下方式激活它:
$(document).ready(function($) {
$('a[rel*=facebox]').facebox()
})
由于页面加载时链接不是全部在页面上,我通常会查看.live或.delegate方法绑定到一个事件,但在这种情况下,我将绑定到什么“事件”说“一旦这个元素在页面上,然后在它上面调用这个方法”。
或者我是否完全以错误的方式解决这个问题?
由于
答案 0 :(得分:2)
没有这样的事件。
将元素添加到页面时,需要调用插件。
// create a new <a>, append it, and call the plugin against it.
$('<a>',{rel:"facebox"}).appendTo('body').facebox();
此示例创建一个新的<a>
元素。如果您从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');
答案 1 :(得分:2)
尚未测试:
$(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();
}
}
答案 2 :(得分:2)
使用.live函数完全可以。您只需要使用DOMNodeInserted事件。
$(document).ready(function() {
$("a[rel*=facebox]").live("DOMNodeInserted", function() {
$(this).facebox();
});
});
答案 3 :(得分:1)
您只需要将此调用添加到链接中加载的ajax。