Недавно у меня возникла небольшая проблема с использованием плагина jquery с coffeescript (в конвейере ресурсов Rails 3.1, если это поможет). Я немного огляделся, но не мог понять, почему он так себя ведет.
Итак, почему это не работает (речь идет о угловом вызове на $ ('. Overlaybox')):
$ ->
$('#slides').sortable
axis: 'y'
update: ->
$.post($(this).data('update-url'), $(this).sortable('serialize'))
$(".overlaybox").corner()
но это работает (забрал вызов углов из jQuery ready):
$ ->
$('#slides').sortable
axis: 'y'
update: ->
$.post($(this).data('update-url'), $(this).sortable('serialize'))
$(".overlaybox").corner()
Я продолжаю получать
TypeError: 'undefined' is not a function (evaluating '$(".overlaybox").corner()')
если я оставлю это там ... Может быть, я сейчас просто слепой, но я не могу понять, почему я не могу оставить это там. Даже скомпилированный код выглядит правдоподобно (по крайней мере, мне так нравится ;-)).
Большое спасибо за ваше время и разъяснения.
Marcel
UPDATE
Вот некоторый относительный код:
# 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 внутри угла $ -> on, я получаю неопределенное значение. Но когда я делаю то же самое вне $ -> (на самом деле ниже), я получаю правильный вывод, и он запускается даже до 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();
});