【发布时间】:2012-01-23 04:59:34
【问题描述】:
我最近在使用带有 coffeescript 的 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 文档就绪事件中取出,角落就可以工作。 我认为我在所有这一切的范围内遗漏了一些实质性的东西: 当我在角落的 $ -> 内执行 console.log 时,我得到一个未定义的。但是当我在 $ -> (实际上在下面)之外做同样的事情时,我得到了正确的输出并且它甚至在 jquery 之前就被触发了(当然)。但为什么它在 jQuery 块中不可用?这是我缺少的咖啡脚本的范围吗? (我现在用不同的插件也有同样的问题)
再次感谢!
这里也是编译后的 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();
});
【问题讨论】:
-
sortable和这个有什么关系?有机会看到重现问题的最小案例吗?该错误表明当您尝试使用角落插件时未加载它,我希望第一个比第二个有更好的工作机会。 -
嘿,我把可排序的代码留在那里,至少在 $ 中有一些代码 -> 我认为这可能更清楚,因为我还提到了我在谈论的那一行。但是,是的,根据我的分析器,角落插件肯定是在咖啡脚本代码之前加载的。对我来说,第一个例子也更有意义,但它不起作用。太奇怪了..
-
你能看看
$.fn.corner看看里面有什么吗?可能有两件事要使用corner名称吗? -
你能拿出一些相关的代码吗?
-
@island205 好的,我把它加到上面的 coe 中了。
标签: javascript jquery coffeescript