2

在我为 jquery ui 自动完成 1.9.1 的源选项定义的函数中,我想访问 jquery ui 自动完成的选项。

通过检查此函数内部的“this”,我发现我可以使用 this.options 访问选项。我想知道这是否是正确的方法,所以我不依赖内部规范?

4

1 回答 1

0

我让这个工作像这样。应该有更简单的方法,但我没有找到。

<script>
    $('#element').autocomplete({
        self: null,
        myOption: 'test',
        source: function (request, response) {
            self = this;
            var matcher = new RegExp($.ui.autocomplete.escapeRegex(request.term), "i");
            response($('#combobox').children("option").map(function () {
                var text = $(this).text();
                if (this.value && (!request.term || matcher.test(text)))
                    return {
                        label: text.replace(
                            new RegExp(
                            "(?![^&;]+;)(?!<[^<>]*)(" +
                            $.ui.autocomplete.escapeRegex(request.term) +
                            ")(?![^<>]*>)(?![^&;]+;)", "gi"
                            ), "<strong>$1</strong>"),
                        value: text
                    };
            }));
        },
        select: function (event, ui) {
            console.log(self.options.myOption);
        }
    });
</script>
<html>
    <input type="text" id="element" />
    <select id="combobox">
        <option value="t1">Python</option>
        <option value="t2">PHP</option>
        <option value="t3">ASP.NET</option>
        <option value="t4">C++</option>
        <option value="t5">Ruby</option>
    </select>   
</html>

提示在这里找到

在小提琴http://jsfiddle.net/f7qvu/1/上检查它

于 2013-03-13T08:52:31.777 回答