Coffeescript и jQuery TypeError - PullRequest
       4

Coffeescript и jQuery TypeError

1 голос
/ 21 января 2012

Недавно у меня возникла небольшая проблема с использованием плагина 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();
  });

1 Ответ

0 голосов
/ 22 января 2012

Ну, проблема была в том, что у меня в общедоступной папке rails были некоторые предварительно скомпилированные ресурсы (более старые вещи), которые как-то мешали моим вызовам jQuery.Очистил его, выучил меньше, теперь все работает как положено.

В любом случае, спасибо большое, ребята, я очень ценю вашу помощь!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...