我创建了一个自定义的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);
}
答案 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>');
}
}
}