在方法中使用$(this)

时间:2016-02-13 11:15:41

标签: javascript jquery typeahead.js

我在多个输入中使用了typeahead.js方法typeahead,我需要将所选值添加到当前输入附近的隐藏输入中。

var $input = $('.typeahead');
$input.typeahead({
    ...
    afterSelect: function (item) {
        $(this).next('.input-hidden').val(item.id);
    }
});

$(this)在这种情况下不起作用。

我创建了一个示例:https://jsfiddle.net/hvwy6a5n/

2 个答案:

答案 0 :(得分:1)

你可以尝试这样的事情: Updated Fiddle

注意,.next()不起作用。 Typeahead会更改您的DOM结构,您需要相应地导航。

  • this代表Typeahead
  • this.$element.context这将为您提供当前输入。

这将为您提供下一个输入

$(this.$element.context).parent().next().find(".typeahead")

答案 1 :(得分:0)

您没有提及this是指某个其他对象是预先输入,还是thisundefined。如果它没有定义(我的猜测),那么您需要将其与afterSelect绑定。

var $input = $('.typeahead');
$input.typeahead({
    ...
    afterSelect: function (item) {
        $(this).next('.input-hidden').val(item.id);
    }.bind(this)
});