Coffeescript将var指令放在错误的位置。我试过在功能上放置牙套但没有成功。这是coffeescript代码:
jQuery (->
$(".item-scaffold-edit").live("click", (=>
element = $(this)
cont = element.data("cont")
url = element.data("url")
$.ajax(url,
dataType: "html"
success: (data, textStatus, jqXHR) ->
$("##{cont}").html(data)
$("##{cont}").data("url", url))))
$(".item-menu").live("click", (=>
element = $(this)
cont = element.data("cont")
url = element.data("url")
if url isnt $("##{cont}").data("url")
$.ajax(url,
dataType: "html"
success: (data, textStatus, jqXHR) ->
$("##{cont}").html(data)
$("##{cont}").data("url", url)
$("#navbar-left li").removeClass("active")
element.parent().addClass("active"))))
)
它生成了这个:
(function () {
jQuery((function () {
var _this = this;
$(".item-scaffold-edit").live("click", (function () {
var cont, element, url;
element = $(_this);
cont = element.data("cont");
url = element.data("url");
return $.ajax(url, {
dataType: "html",
success: function (data, textStatus, jqXHR) {
$("#" + cont).html(data);
return $("#" + cont).data("url", url);
}
});
}));
return $(".item-menu").live("click", (function () {
var cont, element, url;
element = $(_this);
cont = element.data("cont");
url = element.data("url");
if (url !== $("#" + cont).data("url")) {
return $.ajax(url, {
dataType: "html",
success: function (data, textStatus, jqXHR) {
$("#" + cont).html(data);
$("#" + cont).data("url", url);
$("#navbar-left li").removeClass("active");
return element.parent().addClass("active");
}
});
}
}));
}));
}).call(this);
但它应该产生这个:
(function () {
jQuery((function () {
$(".item-scaffold-edit").live("click", (function () {
var cont, element, url;
var _this = this;
element = $(_this);
cont = element.data("cont");
url = element.data("url");
return $.ajax(url, {
dataType: "html",
success: function (data, textStatus, jqXHR) {
$("#" + cont).html(data);
return $("#" + cont).data("url", url);
}
});
}));
return $(".item-menu").live("click", (function () {
var cont, element, url;
var _this = this;
element = $(_this);
cont = element.data("cont");
url = element.data("url");
if (url !== $("#" + cont).data("url")) {
return $.ajax(url, {
dataType: "html",
success: function (data, textStatus, jqXHR) {
$("#" + cont).html(data);
$("#" + cont).data("url", url);
$("#navbar-left li").removeClass("active");
return element.parent().addClass("active");
}
});
}
}));
}));
}).call(this);
任何人都知道我的coffeescript代码有什么问题????
答案 0 :(得分:1)
据我所知,你现在有:
foo -> bar => element = $(this)
生成:
foo(function() {
var _this = this;
return bar(function() {
var element;
return element = $(_this);
});
});
但您希望它能够生成:
foo(function() {
return bar(function() {
var _this = this;
var element;
return element = $(_this);
});
});
这与此相同:
foo(function() {
return bar(function() {
var element;
return element = $(this);
});
});
您可以使用以下方式生成:
foo -> bar -> element = $(this)
例如,将=>
更改为->
。 “胖箭头”的文档是here,它解释了它与正常箭头的不同之处。