繁体   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