抱歉,我的javascript-fu不足以提出更好的问题。
我正在使用bootstrap(bootstrap-typeahead.js)的typeahead功能,但是Gudbergur Erlendsson here添加了修改。
我正在使用onselect功能,并希望操纵输入这里输入的内容(我真的写得很清楚),就像这样(使用coffeescript);
$('form input').typeahead
source: list
onselect: (obj) ->
$(this).css('background-color','blue')
显然这不起作用,因为this
不在onselect函数的范围内,但我怎么能在那里得到它?我希望这是有道理的。
答案 0 :(得分:2)
从the gist开始,我们看到了这一点:
var Typeahead = function ( element, options ) {
this.$element = $(element)
和此:
select: function () {
//...
if (typeof this.onselect == "function")
this.onselect(val)
和此:
$.fn.typeahead = function ( option ) {
return this.each(function () {
//...
if (!data) $this.data('typeahead', (data = new Typeahead(this, options)))
如果你追踪,你会发现你的回调中应该有一个this.$element
,所以:
onselect: (obj) ->
// AFAIK, 'obj' is the thing you selected
@$element.css('background-color', 'blue')
应该是您正在寻找的。 p>
答案 1 :(得分:0)
如果this
在onselect函数之外但不在函数范围内,请在函数外部执行that = this
,然后您可以参考that
而不是{{ 1}}在函数内。如果您有兴趣,请在此处详细了解this
:Private Members in JavaScript
例如:
that