You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

jQuery:如何在autocomplete的AJAX回调中引用触发函数的根元素?

解决方案

你可以通过两种简单方式解决这个问题:

方法1:直接使用request.term(推荐)

jQuery UI Autocomplete的source回调函数自带request参数,其中的term属性就是当前触发自动补全的输入框内容,直接调用即可:

var search = request.term.toLowerCase();

方法2:通过闭包保存当前输入框引用

在source函数开头先存储当前输入框的DOM元素——此时this指向的就是触发自动补全的.main-item输入框,后续AJAX的success回调可以通过闭包访问这个变量:

source: function( request, response ) {
    var $currentInput = $(this); // 保存当前输入框引用
    $.ajax({
        url: "https://api.test.com",
        type: "GET",
        dataType: "xml",
        success: function (data) {
            var matches = [];
            var search = $currentInput.val().toLowerCase(); // 使用保存的引用取值
            // 后续逻辑不变
        },
        error: function (req, err) {
            console.log(req)
        }
    });
}

另外提醒你:当前select回调里的代码会把所有.main-item输入框都设为选中值,应该改成只给当前触发选择的输入框赋值:

select: function( event, ui ) {
    $(this).val(ui.item.value); // this指向当前触发选择的输入框
    $( "span.input-group-btn > input" ).click();
}

修正后的完整代码:

$(function () {
    $( ".main-item" ).autocomplete({
        source: function( request, response ) {
            $.ajax({
                url: "https://api.test.com",
                type: "GET",
                dataType: "xml",
                success: function (data) {
                    var matches = [];
                    var search = request.term.toLowerCase();

                    $(data).find("string").each(function () {
                        var item = $(this).text();
           
                        if (item.toLowerCase().indexOf(search) > -1) {
                            matches.push(item);
                        }
                    });

                    response(matches);
                },
                error: function (req, err) {
                    console.log(req)
                }
            });

        },
        minLength: 2,
        select: function( event, ui ) {
            $(this).val(ui.item.value);
            $( "span.input-group-btn > input" ).click();
        }
    });
});

内容的提问来源于stack exchange,提问作者Seb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 06:35:10