2

jquery ui autocomplete 1.9.1 のソース オプション用に定義した関数で、jquery ui autocomplete のオプションにアクセスしたいと考えています。

この関数内の「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 に答える