1

我正在使用 jquery-1.9.0 和 jquery-ui-1.10.0

var opts = {
            source: availableTags
        };

    var optsA = Object.create(opts, 
    {
        select: {
            value: function (event, ui) {}
        }
    });

    var optsB = Object.create(opts, 
    {
        select: {
            value: function (event, ui) {}
        }
    });

    $("#tags1").autocomplete(
        optsB
    );

    $("#tags2").autocomplete(
        optsA
    );

我正在尝试为我的自动完成建立两个单独的参数列表。对象似乎构造正确,但自动完成似乎无法识别我对继承对象中选择的定义。

4

1 回答 1

1

Object.create调用中缺少一个属性。

你应该添加enumerable: true

var opts = {
    source: availableTags
};

var optsA = Object.create(opts, 
{
    select: {
        value: function (event, ui) {},
        enumerable: true
    }
});

var optsB = Object.create(opts, 
{
    select: {
        value: function (event, ui) {},
        enumerable: true
    }
});

$("#tags1").autocomplete(
    optsB
);

$("#tags2").autocomplete(
    optsA
);

问题是 jQuery 核心方法中的 for in 循环extend找不到该select属性,因为它没有被标记为enumerable所以这就是为什么它不能从autocomplete.

JSFiddle

于 2013-02-13T16:52:57.327 回答