自动完成结果到fancybox

时间:2014-05-30 10:07:56

标签: jquery autocomplete fancybox

我使用jQuery自动完成功能来生成各种页面的链接。单击这些链接应在fancybox中打开。由于链接未在页面加载$(".iframeFancybox1").fancybox();上创建,因此无效(适用于使用此类的所有其他元素)。问题是:如何挂钩自动完成的就绪状态再次启动.fancybox()并在fancybox中打开这些链接?

JS:

var items = [];
$(".forms .menu-item a").each(function(n){
    items.push({
        label: $(this).html(),
        url: $(this).attr('href')
    });
});

$(document).ready(function() {
    var availableTags = items;
    jQuery( ".custom-search .text" ).autocomplete({
        source: availableTags,
        appendTo: ".ac-result"
    }).data("ui-autocomplete")._renderItem = function(ul, item) {
    var listItem = $("<li></li>")
    .data("ui-autocomplete-item", item)
    .append("<a class='iframeFancybox1 cat1' href='"+ item.url +"'>"+ item.label +"</a>")
    .appendTo(ul);

    return listItem;
    };

});

我尝试在输入字段上使用.keyup()来初始化fancybox而没有运气,问题仍然存在。

1 个答案:

答案 0 :(得分:0)

尝试将其绑定到文档末尾的ul:

$('ul.ulSelector').on('click', 'a', function() {
    $(this).fancybox();
});

如果这不起作用,那么您可以在_renderItem函数中尝试此操作:

var listItem = $("<li></li>")
.data("ui-autocomplete-item", item)
.appendTo(ul);

var link = $("<a class='iframeFancybox1 cat1' href='"+ item.url +"'>"+ item.label +"</a>");

listItem.append(link);
link.fancybox();