jquery ui autocomplete 1.9.1 のソース オプション用に定義した関数で、jquery ui autocomplete のオプションにアクセスしたいと考えています。
この関数内の「this」を調べると、this.options を使用してオプションにアクセスできることがわかりました。内部仕様に頼らないように、これが正しい方法なのだろうか?
jquery ui autocomplete 1.9.1 のソース オプション用に定義した関数で、jquery ui autocomplete のオプションにアクセスしたいと考えています。
この関数内の「this」を調べると、this.options を使用してオプションにアクセスできることがわかりました。内部仕様に頼らないように、これが正しい方法なのだろうか?
私はこれをこのように機能させました。もっと簡単な方法があるはずですが、見つかりませんでした。
<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/