0

抱歉,我的 javascript-fu 不够好,无法提出更好的问题。

我正在使用引导程序 (bootstrap-typeahead.js) 的预输入功能,但在此处添加了 Gudbergur Erlendsson 的修改。

我正在使用 onselect 功能,并希望像这样(使用coffeescript)操作在这里输入的输入(我知道这个措辞真的很糟糕);

$('form input').typeahead
  source: list
  onselect: (obj) ->
    $(this).css('background-color','blue')

显然这不起作用,因为this它不在 onselect 函数的范围内,但我怎样才能得到它呢?我希望这是有道理的。

4

2 回答 2

2

要点,我们看到:

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')

应该是你要找的。

于 2012-08-18T15:11:54.503 回答
0

如果this在 onselect 函数的作用域外,但不在函数的作用域内,则在函数that = this外执行 a,则可以在函数内that而不是this在函数内引用。如果您有兴趣,请在that此处阅读更多信息:JavaScript 中的私有成员

例如:

that = this
$('form input').typeahead
  source: list
  onselect: (obj) ->
    $(that).css('background-color','blue')
于 2012-08-20T19:48:55.390 回答