javascript - 如何让 $(this) 在 JQueryUI 自动完成中工作

标签 javascript jquery html jquery-ui autocomplete

这是一个fiddle示例

我无法让 $(this) 在具有 jQueryUI 自动完成功能的源函数中工作。 控制台显示搜索输入在发送 Ajax 请求之前无法获取其数据属性“名称”。有没有办法将变量“name”传递给data

$('.input').autocomplete({
    source: function (request, response) {
        var name = $(this).data('name');
        console.log(name);
        $.ajax({
            url: url,
            dataType: "json",
            data: {
                'q': request.term,
                'field': name
            },
            success: function (data) {
                response($.map(data.query.results.json.json, function (item) {
                    return {
                        label: item.name,
                    }
                }));
            }
        });
    },
    minLength: 2,
    select: function (event, ui) {
        $(this).val(ui.item.label);
        $(this).val(ui.item.label);
    },
    open: function () {
        $(this).autocomplete("widget").width(400)
    }
});

最佳答案

您应该使用this.element来访问相应的输入元素。 this 指向自动完成实例本身:

var name = $(this.element).data('name');

关于javascript - 如何让 $(this) 在 JQueryUI 自动完成中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26638551/

相关文章:

javascript - 这个高阶函数是如何工作的?

javascript - 使用 html 属性设置 CodeMirror 样式和插件

jquery - 如何隐藏一个 div 超出另一个 div 边界的部分

Jquery 代码禁用了图像上的超链接?

html - 背景颜色不会拉伸(stretch) div 的全高

html - 多列布局中文本行的垂直韵律

javascript - 添加/删除事件监听器

javascript - RadioButtonList 发送空字符串

javascript - 如何在下拉列表中为选项添加附加值,以及如何在 angular js 1.x 中选择选项时获取该值

javascript - 与 sibling 的麻烦