以下是我的观点:
<a href="#" onclick="delete_quote(this);" class="quote-delete">
<i class="fi-x small-1"></i>
</a>
这是我的咖啡脚本文件:
$(document).ready ->
$('a.quote-delete').hide()
$('div.quote').mouseenter ->
$(this).children('a.quote-delete').show()
$('div.quote').mouseleave ->
$(this).children('a.quote-delete').hide()
delete_quote = (element) ->
alert 'hi'
$(文件).ready部分工作正常,但是当我按下链接时,我不会得到“&#39;两个&#39;消息,我在浏览器控制台中出错:
Uncaught ReferenceError: delete_quote is not defined
这是编译的JS文件:
(function() {
var delete_quote;
$(document).ready(function() {
$('a.quote-delete').hide();
$('div.quote').mouseenter(function() {
return $(this).children('a.quote-delete').show();
});
return $('div.quote').mouseleave(function() {
return $(this).children('a.quote-delete').hide();
});
});
delete_quote = function(element) {
return alert('hi');
};
}).call(this);
答案 0 :(得分:2)
CoffeeScript将delete_quote
函数放在函数闭包中,因此不属于页面上的全局上下文。 onclick
处理程序中的函数正在全局上下文中调用。
在这方面,CoffeeScript需要一些额外的帮助。我非常熟悉JavaScript,这是CoffeeScript的初学者,所以下面的代码可能不起作用,但应该给你基本的想法。您必须将该函数定义为window
对象的一部分:
window.delete_quote = (element) ->
alert 'Hi'
编辑:您也可以尝试:
this.delete_quote = (element) ->
alert 'Hi'
这个其他StackOverflow问题也可能有用:CoffeeScript: coffee -w name-of-file.coffee complains: “window is not defined” - 虽然问题更多地与在Node和浏览器中运行CoffeeScript编译的JavaScript有关,但它涉及如何定义&#34; global& #34;变量和函数。