Javascript 如何简化jquery自动完成

Javascript 如何简化jquery自动完成,javascript,jquery,autocomplete,Javascript,Jquery,Autocomplete,我使用jquery autocomplete,它看起来像我的代码,用来调用插件,不太好。有没有更简单的方法调用jquery autocomplete js 你所拥有的并不可怕。如果您只初始化过一次这些自动完成,那么它总体上是可读的,尽管您确实有一些重复 缓存jQuery对象以备将来使用。在上面的代码片段中,您只引用每个jQuery对象一次(例如,$(“#m_职业”)),但在真正的Web应用程序中,您很可能会更多地使用它。缓存有助于减少jQuery查找操作的数量,并且是一种很好的做法,即使它不太可

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

js


你所拥有的并不可怕。如果您只初始化过一次这些自动完成,那么它总体上是可读的,尽管您确实有一些重复

  • 缓存jQuery对象以备将来使用。在上面的代码片段中,您只引用每个jQuery对象一次(例如,
    $(“#m_职业”)
    ),但在真正的Web应用程序中,您很可能会更多地使用它。缓存有助于减少jQuery查找操作的数量,并且是一种很好的做法,即使它不太可能显著提高用户的性能

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

  • 将初始化重构为一个函数。如果您真的觉得自动完成初始化很难看、很复杂或需要频繁编辑,请将其设置为单个函数。以后可以对初始化进行一次全局编辑,而不是多次

  • 将这些因素考虑在内的代码重做如下:

    var initAutocomplete=function($el,dataUrl){
    var autocompleteOptions={selectFirst:true};
    $el.autocomplete(数据URL、自动完成选项);
    };
    $(文档).ready(函数(){
    var$m_职业、$foccupation、$g_地址、$relationship;
    $m#U职业=$(‘m#U职业’);
    initAutocomplete($m_职业,“search/moccupation.php”);
    $foccupation=$(“#foccupation”);
    initAutocomplete($foccupation,“search/f_occulation.php”);
    $g#U地址=$(“#g#U地址”);
    initAutocomplete($g_address,“search/g_address.php”);
    $relationship=$(“#relationship”);
    initAutocomplete($relationship,“search/relationship.php”);
    });
    
    通过使用单个字符串表示从中收集数据的DOM ID和URL,您可以在技术上进一步优化,但根据我的经验,这在维护中会出现问题。所以我不会把它们结合得太紧密

    $(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
     });
    });