【发布时间】:2012-01-20 04:22:22
【问题描述】:
我能够在 CoffeeScript 中很好地使用 jQuery 自动完成功能,但是当我尝试使用重音折叠来实现它时,出现了问题。这是 jQuery 文档中使用普通 javascript 提供的示例
$(function() {
var names = [ "Jörn Zaefferer", "Scott González", "John Resig" ];
var accentMap = {
"á": "a",
"ö": "o"
};
var normalize = function( term ) {
var ret = "";
for ( var i = 0; i < term.length; i++ ) {
ret += accentMap[ term.charAt(i) ] || term.charAt(i);
}
return ret;
};
$( "#developer" ).autocomplete({
source: function( request, response ) {
var matcher = new RegExp( $.ui.autocomplete.escapeRegex( request.term ), "i" );
response( $.grep( names, function( value ) {
value = value.label || value.value || value;
return matcher.test( value ) || matcher.test( normalize( value ) );
}) );
}
});
});
这是我制作的 CoffeeScript 版本
jQuery ->
names = [
"Jörn Zaefferer",
"Scott González",
"John Resig" ]
accentMap = {
"á": "a",
"ö": "o"
}
normalize = (term) ->
ret = ""
for i in [0..term.length]
ret += accentMap[term.charAt i] || term.charAt i
return ret
$("#search_word").autocomplete {
source: (request, response) ->
matcher = new RegExp $.ui.autocomplete.escapeRegex (request.term), "i"
response $.grep names, (value) ->
value = value.label || value.value || value
(matcher.test value) || (matcher.test normalize value)
}
【问题讨论】:
-
你可以试试:js2coffee.org
-
这实际上比你想象的更有帮助。如果不是对我的帖子的评论,我会让你作为答案。
-
所以我做了一个答案 ;) 很高兴它很有用
标签: javascript jquery ruby-on-rails coffeescript jquery-autocomplete