带有继承对象参数的Jquery AutoComplete

时间:2013-02-13 16:47:59

标签: javascript jquery

我正在使用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
    );

我正在尝试为自动复合构建两个单独的参数列表。这些对象似乎构造正确,但自动完成似乎并不能识别我对继承对象中的select的定义。

1 个答案:

答案 0 :(得分: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的核心extend方法中的for循环找不到select属性,因为它没有标记为enumerable所以这就是为什么它不能从内部访问autocomplete

<强> JSFiddle