2

当我做这样简单的事情时:

$ ->
  $('#target').html('blabla')

有用。

当我尝试:

$ ->
  $('#target').html('blabla').myFunction()

  myFunction = ->
    // a certain action

我总是得到一个错误:TypeError: $(...).html(...).myFunction is not a function

这是为什么?

正如您可能猜到的那样,我离专业人士还很远!

4

2 回答 2

4

如果你做这样的事情:

$ ->
  $('#target').html('blabla').myFunction()

  myFunction = ->
    alert("OK")

被转化为:

$(function() {
  var myFunction;
  $('#target').html('blabla').myFunction();
  return myFunction = function() {
    return alert("OK");
  };
});

如您所见, myFunction 是一个包含某些结构的变量,但是当您执行 $('#target'#).html('blablabla') 时返回的对象没有名为 myFunction 的方法,这就是你得到那个错误的原因。

我不确定你想做什么,但你可以做类似的事情

$ ->
  myFunction = (data) ->
    alert(data)

  myFunction $('#target').html('blablabla')

转换为:

$(function() {
  var myFunction;
  myFunction = function(data) {
    return alert(data);
  };
  return myFunction($('#target').html('blablabla'));
});

如果您正在学习咖啡脚本,那么需要考虑转换的好网站是http://js2coffee.org/

于 2012-12-05T13:48:13.677 回答
1

这不是 CoffeeScript 问题。您没有定义可以在 jQuery 对象上调用的 jQuery 插件,而只是一个常规函数。看看这里:http ://docs.jquery.com/Plugins/Authoring

于 2012-12-05T13:48:25.100 回答