簡體   English   中英

Coffeescript和jQuery TypeError

[英]Coffeescript and jQuery TypeError

我最近在使用帶有咖啡腳本的jquery插件時遇到了一個小問題(如果有幫助的話,在Rails 3.1資產管道中)。 我環顧了一下,但無法弄清楚為什么會這樣。

因此,為什么這不起作用(談論$('。overlaybox')的角落呼叫):

$ ->
  $('#slides').sortable
    axis: 'y'
    update: ->
      $.post($(this).data('update-url'), $(this).sortable('serialize'))

  $(".overlaybox").corner()

但這確實有效(將jQuery做好的准備付諸東流):

$ ->
  $('#slides').sortable
    axis: 'y'
    update: ->
      $.post($(this).data('update-url'), $(this).sortable('serialize'))

$(".overlaybox").corner()

我不斷得到

TypeError: 'undefined' is not a function (evaluating '$(".overlaybox").corner()')

如果我把它留在那里。也許我現在只是瞎子,但我不知道為什么我不能把它留在那里。 甚至編譯后的代碼看起來都是合法的(至少對我來說是這樣;-))。

非常感謝您的時間和澄清。

馬塞爾

更新以下是一些相關代碼:

# app/assets/javascripts/application.js
//= require jquery
//= require jquery-ui
//= require jquery_ujs
//= require jquery.Jcrop
//= require jquery.corner
//= require jqtextile
//= require_tree .

# app/assets/javascripts/slides.js
$ ->
  $(".overlaybox").draggable 
    containment: 'parent',
    drag: -> 
        offset = $(this).position()
        xPos = offset.left
        yPos = offset.top
        $('#slide_xpos').val(xPos)
        $('#slide_ypos').val(yPos)


  $('#slides').sortable
        axis: 'y'
    update: ->
        $.post($(this).data('update-url'), $(this).sortable('serialize'))

  $(".overlaybox").corner()

然后是視圖(app / views / slides / _form.html)。 有趣的是,只要我將其從jquery文檔ready事件中刪除,該角就可以工作。 我想我在所有這些方面的范圍上都缺少一些實質性的內容:當我在$->拐角處執行console.log時,得到的是未定義的。 但是,當我在$->(實際上在下面)之外執行相同操作時,我得到了正確的輸出,並且甚至在jquery之前就被激發了(當然)。 但是,為什么它在jQuery塊中不可用? 我想念的那個帶有CoffeeScript的示波器嗎? (我現在使用其他插件遇到相同的問題)

再次非常感謝!

這也是編譯的javascript代碼,如果有幫助的話

$(function() {
    console.log($('.overlaybox'));
    console.log($('.overlaybox').corner);
    $(".overlaybox").draggable({
      containment: 'parent',
      drag: function() {
        var offset, xPos, yPos;
        offset = $(this).position();
        xPos = offset.left;
        yPos = offset.top;
        $('#slide_xpos').val(xPos);
        return $('#slide_ypos').val(yPos);
      }
    });
    $('#slides').sortable({
      axis: 'y',
      update: function() {
        return $.post($(this).data('update-url'), $(this).sortable('serialize'));
      }
    });
    return $(".overlaybox").corner();
  });

嗯,問題是,我的rails公用文件夾中有一些預編譯的資產(舊的東西),這有點弄亂了我的jQuery調用。 清除它,吸取我的教訓,一切都按預期工作。

無論如何,非常感謝你們,我非常感謝您的幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM