如何使jquery自动完成简化

时间:2015-06-19 00:19:54

标签: javascript jquery autocomplete

我使用jquery autocomplete看起来像我的代码,调用插件,不好。有没有更简单的方法来调用jquery autocomplete

JS

$(document).ready(function(){
 $("#m_occupation").autocomplete("search/moccupation.php", {
        selectFirst: true
 });
 $("#foccupation").autocomplete("search/f_occupation.php", {
        selectFirst: true
 });
 $("#g_address").autocomplete("search/g_address.php", {
        selectFirst: true
 });
 $("#relationship").autocomplete("search/relationship.php", {
        selectFirst: true
 });
});

1 个答案:

答案 0 :(得分:0)

你所拥有的并不是非常糟糕。如果你只是一次初始化这些自动复合词,那么它总体来说很可读,尽管你确实有一些重复。

  1. 缓存您的jQuery对象以供将来使用。在上面的代码段中,您只引用一次jQuery对象(例如$("#m_occupation")),但在真正的Web应用程序中,有& #39;你很有可能会更多地使用它。缓存有助于减少jQuery查找操作的数量,即使它不太可能显着提高用户的性能,也是一种很好的做法。

  2. 缓存您的选项对象。您多次重复您的选项声明;只需声明一个autocompleteOptions对象并完成它。

  3. 重构函数初始化。如果您真的觉得自动完成初始化很难,或者很复杂,或者经常编辑,请将其设为单个函数。未来的全局初始化编辑可以进行一次而不是多次。

  4. 将代码考虑在内的代码重做如下:

    var initAutocomplete = function($el, dataUrl) {
      var autocompleteOptions = { selectFirst: true };
      $el.autocomplete(dataUrl, autocompleteOptions);
    };
    
    $(document).ready(function(){
      var $m_occupation, $foccupation, $g_address, $relationship;
    
      $m_occupation = $('#m_occupation');
      initAutocomplete($m_occupation, "search/moccupation.php");
    
      $foccupation = $('#foccupation');
      initAutocomplete($foccupation, "search/f_occupation.php");
    
      $g_address = $('#g_address');
      initAutocomplete($g_address, "search/g_address.php");
    
      $relationship = $('#relationship');
      initAutocomplete($relationship, "search/relationship.php");
    });
    

    您可以通过使用单个字符串来表示从中收集数据的DOM ID和URL,从技术上进一步优化,但根据我的经验,这会在维护中出现问题。所以我不会把那些太紧密地结合在一起。