首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >做更简单的函数jquery?

做更简单的函数jquery?
EN

Stack Overflow用户
提问于 2014-08-22 09:53:14
回答 3查看 40关注 0票数 0

我的页面上几乎没有自动完成,但我有一个问题,一切正常,但问题是,我不知道我将如何#ID,也许我可以做一个函数,用ID做一些数组,这样我可以方便地维护代码,这是我现在有什么?

代码语言:javascript
复制
  $('#autocomplete-1').autocomplete({
            source: autocompleteDataSource,
            minLength: 3,
            delay: 800,
            appendTo: '#auto-complete-1',
            select: autocompleteOnSelect,
            open: function () {
                setTimeout(function () { $("#ui-id-1").show(); }, 100);
            },
            response: function (event, ui) {
                if (ui.content.length === 0) {
                    $(this).val("No results found");
                } else {
                    $(this).empty();
                }
            }
        });
        $('#autocomplete-2').autocomplete({
            source: autocompleteDataSource,
            minLength: 3,
            delay: 800,
            appendTo: '#auto-complete-2',
            select: autocompleteOnSelect,
            open: function () {
                setTimeout(function () { $("#ui-id-2").show(); }, 100);
            },
            response: function (event, ui) {
                if (ui.content.length === 0) {
                    $(this).val("No results found");
                } else {
                    $(this).empty();
                }
            }
        });
        $('#autocomplete-3').autocomplete({
            source: autocompleteDataSource,
            minLength: 3,
            delay: 800,
            appendTo: '#auto-complete-3',
            select: autocompleteOnSelect,
            open: function () {
                setTimeout(function () { $("#ui-id-3").show(); }, 100);
            },
            response: function (event, ui) {
                if (ui.content.length === 0) {
                    $(this).val("No results found");
                } else {
                    $(this).empty();
                }
            }
        });

需要使数组中的所有ID,然后循环成函数?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-08-22 10:03:50

试试这个:

代码语言:javascript
复制
var arr = $('[id^=autocomplete-]');

$.each(arr, function(index, obj){
     $('#autocomplete-' + (index+1)).autocomplete({
        source: autocompleteDataSource,
        minLength: 3,
        delay: 800,
        appendTo: '#autocomplete-' + (index+1),
        select: autocompleteOnSelect,
        open: function () {
            setTimeout(function () { $('#ui-id-' + (index+1)).show(); }, 100);
        },
        response: function (event, ui) {
            if (ui.content.length === 0) {
                $(this).val("No results found");
            } else {
                $(this).empty();
            }
        }
    });
  });
票数 2
EN

Stack Overflow用户

发布于 2014-08-22 10:01:58

如果将空的CSS类(如.autocomplete {})添加到所有自动完成元素中,则可能会对函数进行如下更改:

代码语言:javascript
复制
    $('.autocomplete').autocomplete({
        source: autocompleteDataSource,
        minLength: 3,
        delay: 800,
        appendTo: this.id,
        select: autocompleteOnSelect,
        open: function () {
            setTimeout(function () { $(this). ??? show(); }, 100);
        },
        response: function (event, ui) {
            if (ui.content.length === 0) {
                $(this).val("No results found");
            } else {
                $(this).empty();
            }
        }
    });

基本上,您只需要一个泛型函数,而不需要任何ID数组。

唯一的办法是以动态的方式识别ID为#ui-id-2的后续子级,这取决于您的布局(“?”(以上)

票数 0
EN

Stack Overflow用户

发布于 2014-08-22 10:03:57

您可以这样做,使用从选择器开始:

代码语言:javascript
复制
$("[id^='autocomplete-']").autocomplete
rest of it

那就把身份证

代码语言:javascript
复制
var id = $(this).attr("id").split("autocomplete-")[1]

然后

代码语言:javascript
复制
var ui = $("#ui-id-_" + id)

这会给你身份证明。因此,您不需要保留一个数组作为引用,您可以从元素中获取id。

编辑:

代码语言:javascript
复制
$("[id^='autocomplete-']").autocomplete({
        source: autocompleteDataSource,
        minLength: 3,
        delay: 800,
        var id = $(this).attr("id").split("autocomplete-")[1] //gives you the id
        appendTo: '#auto-complete-' + id,
        select: autocompleteOnSelect, 
        open: function () {
            setTimeout(function () { $("#ui-id-" + id).show(); }, 100);
        },
        response: function (event, ui) {
            if (ui.content.length === 0) {
                $(this).val("No results found");
            } else {
                $(this).empty();
            }
        }
    });
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25444261

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档