Jquery ajax facebox

时间:2011-01-08 14:22:49

标签: javascript jquery ajax

我有一个“实时搜索”类型的页面,它使用ajax调用另一个页面来检查输入的有效性。它返回一个图像,您可以单击该图像以查看有关该产品的更多信息。该图像具有rel =“facebox”属性,用于在单击时显示其中包含div信息的facebox。但是,我必须单击图像两次才能加载facebox。这是我正在使用的Jquery实时代码:

            jQuery(document).ready(function($) {

            $('a[rel*=facebox]').live("click", function() {
                $(this).facebox();
            });
        });

提前致谢!

2 个答案:

答案 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。