0

申し訳ありませんが、私の javascript-fu は、より良い質問を思い付くのに十分ではありません。

私はブートストラップ (bootstrap-typeahead.js) の typeahead 機能を使用していますが、ここでGudbergur Erlendsson によって変更が追加されています。

私は onselect 機能を使用しており、ここに入力されていた入力を操作したいと思っています (これは本当にひどい言い方です) (coffeescript を使用して);

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

明らかに、これはthisonselect 関数の範囲内にないため機能しませんが、どうすればそこに到達できますか? これが理にかなっていることを願っています。

4

2 に答える 2

2

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それをたどると、コールバックにa が必要であることがわかります。

onselect: (obj) ->
    // AFAIK, 'obj' is the thing you selected
    @$element.css('background-color', 'blue')

あなたが探しているものでなければなりません。

于 2012-08-18T15:11:54.503 に答える
0

thisonselect 関数の外側のスコープ内にあるが、関数内のスコープ内にない場合は、関数の外側で a を実行すると、関数内の代わりにthat = this参照できます。興味がある場合は、こちらの詳細をお読みください: JavaScript のプライベート メンバーthatthisthat

たとえば、次のようになります。

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