我有一个“实时搜索”类型的页面,它使用ajax调用另一个页面来检查输入的有效性。它返回一个图像,您可以单击该图像以查看有关该产品的更多信息。该图像具有rel =“facebox”属性,用于在单击时显示其中包含div信息的facebox。但是,我必须单击图像两次才能加载facebox。这是我正在使用的Jquery实时代码:
jQuery(document).ready(function($) {
$('a[rel*=facebox]').live("click", function() {
$(this).facebox();
});
});
提前致谢!
答案 0 :(得分:2)
发生了什么,是您初始化 facebox onclick
。第一个调用将为click event
添加一个句柄来打开facebox,所以如果你在收到这些实时结果时没有回调来执行此操作,则必须执行以下操作:
$('a[rel*=facebox]').live("click", function() {
$(this).unbind("click").facebox().trigger("click");
return false;
}
但这是丑陋的 :-(。甚至,当你使用“live”时,有可能当一些新元素到达时,事件将被重新绑定到元素:S您可以使用console.log
验证这一点。
更简洁的方法是将一个init属性添加到facebox,称为autoStart或类似的东西,它将初始化facebox,并在同一个函数中打开它。
祝你好运!答案 1 :(得分:0)
仅限此项使用:
$(function(){
$('a[rel*=facebox]').facebox();
});
甚至删除*(如果这是链接上唯一的类) 它将创建facebox div结构,当你使用click事件时,第一次点击是生成div,第二次是打开facebox。
哦,还有一件事,因为内容是动态生成的,您可以使用回调来运行这行代码来重新附加click事件。
干杯
-G。