JavaScript to CoffeeScript Error
JavaScript to CoffeeScript Error
我有一个函数,当单击最后一个复选框时,它会切换所有其他复选框。
它在普通的JavaScript中完美运行:
$(document).ready(function() {
$('#manage').click(function(event) {
if(this.checked) {
$('.checkbox:checkbox').each(function() {
this.checked = true;
});
}
if(!this.checked) {
$('.checkbox:checkbox').each(function() {
this.checked = false;
});
}
});
});
http://jsfiddle.net/PauaN/9/
但是,当我编译成 CoffeeScript(使用 http://js2coffee.org/)时,当复选框关闭时,功能会中断:
$(document).ready ->
$("#manage").click (event) ->
if @checked
$(".checkbox:checkbox").each ->
@checked = true
unless @checked
$(".checkbox:checkbox").each ->
@checked = false
http://jsfiddle.net/FRs5d/7/
我认为这是因为每个循环只运行一次。
出了什么问题?
发生两种情况:
- 咖啡脚本将返回放在每个函数的末尾,因此
@checked = true
更改为return this.checked = true;
- 如果 Jquery
each()
中的函数返回false
,则不会继续。
解决这个问题的方法是更改最后一行
@checked = false
像这样:
@checked = false
return true
问题如下。在转换后的脚本中,CoffeeScript 创建的隐式返回false
unless @checked
$(".checkbox:checkbox").each () ->
@checked = false
# here false is returned stopping the each function from continuing
所以解决方案是在函数末尾添加true
unless @checked
$(".checkbox:checkbox").each () ->
@checked = false
true
这把小提琴在行动中展示了它。
相关文章:
- jQuery Error adadvisor.net
- Ajax调用ERror Cross Origin REquest:在rails中自动完成大学列表
- 类型error primeFactors.for不是函数
- Array.every返回false,而不是类型error
- datatables.net ajax error - http://datatables.net/tn/7
- Error: timers.js:234 callback.apply(timer, args);
- 滚动到错误字段ERROR
- Error with xmlhttpresponse
- ajax javascript 500 error
- CoffeeScript将对象添加到数组中
- 将数据从ExpressJS发送到AngularJS ERROR json
- gets.chomp for coffeescript?
- CoffeeScript绑定多个参数
- walkscore API JSON error
- 尝试将js函数更改为coffeescript时发生Uncaught ReferenceError
- STRIPE.JS Error
- Jquery Validate with Coffeescript
- JavaScript to CoffeeScript Error
- Use coffeescript/javascript 'throw error' or 'th
- CoffeeScript error