JQuery在自动完成之间共享功能

时间:2013-02-13 10:54:47

标签: javascript jquery jquery-ui

示例JQuery自动完成代码。我想要一个可以通过两个单独的自动完成实例调用的函数,它允许我共享相同的功能而无需重写 代码。

$("tags1").autocomplete(
{
               source: availableTags
});

确保清楚。我不想重复代码。所以当我在其他地方使用另一个自动完成时,我想引用自动完成中包含的代码,而不是重复代码(我只是重复自己)

1 个答案:

答案 0 :(得分:1)

您可以制作手动ajax get请求以获取数据,将其存储在变量中,然后将该变量存储为两个自动填充。

var cache = {},
    requestData = function(request, response) {
        var term = request.term;
        if(term in cache) {
            response(cache[term]);
            return;
        }

        $.getJSON("search.php", request, function(data, status, xhr) {
            cache[term] = data;
            response(data);
        });
    };

$("#birds").autocomplete({
    minLength: 2,
    source: requestData
});

$("#moreBirds").autocomplete({
    minLength: 2,
    source: requestData
});

来源:http://jqueryui.com/resources/demos/autocomplete/remote-with-cache.html

但是你应该从服务器发送缓存头,告诉客户端缓存请求的结果。然后当第二个自动完成程序发出相同的请求时,浏览器不必再次点击服务器。

这篇文章很精彩:https://devcenter.heroku.com/articles/increasing-application-performance-with-http-cache-headers