由jquery函数创建的重复对象

时间:2014-02-25 16:25:27

标签: jquery

我创建了一个自定义的jquery函数autoSuggest,它应该创建一个带有输入字段菜单的div。

然后我想将它应用于多个字段,但是当我这样做时它会创建多个div,这很好。问题是他们都拥有相同的身份。我想要独一无二。

function randomString(length, chars) { 
    var result = '';
    for (var i = length; i > 0; --i) result += chars[Math.round(Math.random() *     (chars.length - 1))];
    return result;
}

$.fn.autoSuggest = function(){
    var id = randomString(16, '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ');


    if(!$('#autoSuggest_'+id).length) {
        $(this).offsetParent()
        .append('<div id="autoSuggest_'+id+'">content</div>');
    }


var autosuggestDiv = $('#autoSuggest_'+id);
}

1 个答案:

答案 0 :(得分:3)

您需要遍历输入对象。您可以使用$(this).each(...)执行此操作,或者如果this对象已经是jQuery对象,则可以使用this.each(...)。 (感谢@A.Wolff)。

试试这个:

$.fn.autoSuggest = function() {

   return this.each(function() {
        var id = randomString(16, '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ');

        if(!$('#autoSuggest_'+id).length) {
            $(this).offsetParent()
                .append('<div id="autoSuggest_'+id+'">content</div>');
        }
    }      
}