具有继承对象参数的Jquery AutoComplete

Jquery AutoComplete with inherited object paramater

本文关键字:Jquery AutoComplete 参数 对象 继承      更新时间:2023-09-26

我使用的是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的定义。

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 in循环找不到select属性,因为它没有标记为enumerable,因此无法从autocomplete内部访问它。

JSFiddle