不能获得$(这)工作在jQueryUI自动完成

前端之家收集整理的这篇文章主要介绍了不能获得$(这)工作在jQueryUI自动完成前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图创建一个通用的自动完成脚本使用jQueryUI。自动填充应适用于每个:
<input type='text' class='autocomplete' id='foo'/>
<input type='text' class='autocomplete' id='bar'/>
...

现在我试图访问’foo’或’bar’在源函数中使用$(this),但是当提醒我总是得到’未定义’。

$('input.autocomplete').autocomplete({
    source: function(req,add){
        var id = $(this).attr('id');
        alert(id);
    }
});

我究竟做错了什么?

解决方法

单独为您选择的每个项目设置自动填充,使用闭包来保存对相关元素的引用。类似以下内容
$('input.autocomplete').each(function(i,el) {
    el = $(el);
    el.autocomplete({
        source: function(req,add) {
            var id = el.attr('id');
            alert(id);
        }
    });
});

替代(编辑)

我不明白为什么有这样的抵抗使用each():它的工作,代码是非常清晰和可读性,它不会引入效率的问题;但如果你决心避免每个(),这里有一个替代…

*请注意:以下方法依赖于(一点点)jQuery Autocomplete的内部,所以我建议第一个选项…但选择是你的。

$('input.autocomplete').autocomplete({
        source: function(req,add) {
            var id = this.element.attr('id');
            alert(id);
        }
    });
});

这将工作,至少直到/除非他们改变source()函数自动完成插件调用的方式。

所以,你有两个选择…对每个人来说。

原文链接:https://www.f2er.com/jquery/183692.html

猜你在找的jQuery相关文章