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

时间:2014-10-29 19:03:17

标签: javascript jquery html jquery-ui autocomplete

这是一个fiddle示例

我无法使用jQueryUI自动完成功能使$(this)在源代码函数中工作。 控制台显示搜索输入无法获取其数据属性' name'在发送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)
    }
});

1 个答案:

答案 0 :(得分:1)

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

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