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'));
});

もしあなたがcoffeescriptを学んでいるなら、変換のために心に留めておくべき良いウェブサイトは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 に答える