添加函数到插件js而不实际修改js文件

时间:2014-04-21 15:44:35

标签: javascript jquery twitter-bootstrap jquery-plugins twitter-bootstrap-3

我想在插件js http://twitter.github.io/typeahead.js/releases/latest/typeahead.bundle.js文件中添加'setInputDataId'函数,与现有函数'_select'在同一级别,而不实际修改文件本身。所以我想知道如何添加新功能,我将不胜感激。

插件中的现有代码:

    _select: function select(datum) {
            this.input.setQuery(datum.value);
            this.input.setInputValue(datum.value, true);
            this._setLanguageDirection();
            this.eventBus.trigger("selected", datum.raw, datum.datasetName);
            this.dropdown.close();
            _.defer(_.bind(this.dropdown.empty, this.dropdown));
        },

我想要的新代码:

    _select: function select(datum) {
            this.input.setQuery(datum.value);
            this.input.setInputValue(datum.value, true);
            this.input.setInputDataId(datum.raw);
            this._setLanguageDirection();
            this.eventBus.trigger("selected", datum.raw, datum.datasetName);
            this.dropdown.close();
            _.defer(_.bind(this.dropdown.empty, this.dropdown));
        },

而且'setInputDataId'函数最初不在插件中,我也想添加这个函数。

函数体是:

      setInputDataId: function setInputDataId(raw) {
            this.$input.attr('data-id',raw.id);
        },

请转到http://twitter.github.io/typeahead.js/examples/ 在chrome的控制台选项卡中执行以下操作:

console.dir($.fn.typeahead)

现在展开节点功能然后''然后第二个Closure那里你可以看到Typeahead。现在点击Typeahead原型,你可以看到_select方法。如何修改此功能。

层次:

function
  <function scope>
    Closure (second)
      Typeahead
        prototype
          _select

1 个答案:

答案 0 :(得分:0)

由于_只是一个对象,只需在添加上述文件后将其添加到脚本文件中。

例如:

_.functionName = function() { //implementation };

首先打开控制台并在那里试一试。

输入_并按Enter键,您应该获得对象内容。然后尝试上面的伪代码,然后关闭你!但显然除非你把它添加到某个地方的文件中,否则只有在你关闭浏览器之前它才会存在。