如何在不重复代码的情况下在全局侦听器上设置 javascript 属性

How to set javascript properties on a global listener, without duplicating code

如果我的页面上有多个“.typeahead”输入字段,并且我希望它们中的每一个都初始化 typehead(),我如何才能在不重复我的代码的情况下为一个特定的输入元素设置异常?例如:

我的领域:

<input type="text" class="typehead_selector" id="coworkers">
<input type="text" class="typehead_selector" id="jobs">
<input type="text" class="typehead_selector" id="search" data-action="search">

(最后一个是我想调用 typeahead() 的字段,但 autoSelect 设置为 false。

我的剧本:

$(".typehead_selector").typeahead({
    autoSelect: true, // all typehead initilization have autoSelect

    updater: function (item) {
        // logic here
    }

        // ... more logic stripped here
});

我的新脚本,我觉得它很脏?

$(".typehead_selector").each(function() { // added line

    var auto_select = true; // added line
    if($(this).data("action") == "search") { // added line
        auto_select = false; // now my searchfield will not have autoSelect enabled, hooray. but still, isn't this messy code?
    } // added line

    $(this).typeahead({ // now listening on $(this) instead of $(".typehead_selector")
        autoSelect: auto_select,

        updater: function (item) {
            // logic here
        }

        // ... more logic stripped here
    });
});

你好,

迈克尔

使用这个

var options = {
    autoSelect: true, // all typehead initilization have autoSelect

    updater: function (item) {
        // logic here
    }

    // ... more logic stripped here
}

$(".typehead_selector:not(#search)").typeahead(options);
options.autoSelect = false;
$("#seach").typeahead(options);