如何通过"这个"匿名函数的上下文

时间:2018-02-22 13:21:42

标签: javascript jquery autocomplete

我尝试使用DevBridge Autocomplete着名的插件/库(不确定具体用语是什么)来为某些输入字段构建自动完成功能。

我常见的问题是我输了#34;这个"输入应该确定要发送什么参数的函数的上下文(现在是一个简单的警报($(this).attr(' class'))来检查上下文)

我需要将一个参数传递给我的后端,以了解哪个输入是当前处理的。

我的选择器位于输入html上,如下所示:

<input type="text" class="input_actu input_autocomplete" id="input_contentactualites0" name"input_contentactualites0" data-id="" value="" size="70" maxlength="300"/>

现在它看起来像这样:

  $('.input_autocomplete').devbridgeAutocomplete({
  serviceUrl: 'autocomplete',
  params: {
    flag: function() {
      alert($(this).attr('class'));
    }
  },
  minChars: 3,
  type: 'post',
  onSelect: function(suggestion) {
    $(this).attr("data-id", suggestion.data)
   }
  });

关于这个问题有很多帖子和解决方案,我已经尝试过.bind(这个):

    $('.input_autocomplete').devbridgeAutocomplete({
        serviceUrl: 'autocomplete',
        params: {flag: function () {
        alert($(this).attr('class'));
    }.bind(this)},
        minChars: 3,
        type: 'post',
        onSelect: function (suggestion) {
            $(this).attr("data-id", suggestion.data)
        }
});

它似乎不起作用,我也读过有关call()但我不确定它是否适用于我的情况。

此外,我宁愿不使用Global,因为它不是一个好方法。

非常欢迎任何建议,感谢您抽出时间阅读和帮助:)

1 个答案:

答案 0 :(得分:-1)

也许这有帮助?

    var params = {
        flags: function (o) {
            alert($(o).attr('class'));
        }
    };

    var config = {
        serviceUrl: 'autocomplete',
        minChars: 3,
        type: 'post',
        onSelect: function (suggestion) {

            $(this).attr("data-id", suggestion.data);
            //#####################Fire the event:
              params.flags(this);
        }
    };

    var configDev = $.extend(config, params);


    $('.input_autocomplete').devbridgeAutocomplete(configDev);
相关问题