Эффект jQuery, возвращающий неопределенный - PullRequest
4 голосов
/ 28 февраля 2012

У меня есть следующий блок:

$('.new_comment').live('ajax:success', function(evt, data, status, xhr){
  $('.comments article:last').after(xhr.responseText).effect("highlight", {}, 3000);
})

Поэтому, когда форма new_comment отправлена, она вызывает это.

Функция after() работает нормально, но вызов effect() выдает эту ошибку:

TypeError: 'undefined' is not a function (evaluating '$('.comments article:last').after(xhr.responseText).effect("highlight", {}, 3000)')

Я использую jQuery 1.7.1 и jQuery UI 1.8.16.

ОБНОВЛЕНИЕ: xhr.responseText возвращает вновь созданный элемент article, например:

<article id="2">
  <h6><a href="#">Joe</a> <span>(<a href="#2">less than a minute ago</a>)</span></h6>
  <p>This is the new comment!</p>
</article>

После добавления .comments DOM выглядит так:

<section class="comments">
  <h3>Comments</h3>
  <article id="1">
    <h6><a href="#">Joe</a> <span>(<a href="#1">less than a minute ago</a>)</span></h6>
    <p>This is a comment!</p>
  </article>
  <article id="2">
    <h6><a href="#">Joe</a> <span>(<a href="#2">less than a minute ago</a>)</span></h6>
    <p>This is the new comment!</p>
  </article>
</section>

Кроме того, если я запускаю console.log($('.comments article:last'));, он определенно возвращает созданный объект.

Ответы [ 2 ]

9 голосов
/ 09 марта 2012

Я разобрался в проблеме. Я загружал библиотеку jQuery дважды. Один раз используя предварительно поставленную версию с Rails и один раз из CDN Google. Убрал один из них и теперь все работает нормально. Вздох.

0 голосов
/ 28 февраля 2012

Новый элемент, созданный из-за сообщения ajax, не связан с родительским контейнером. Кажется, что новое пространство имен создается путем публикации. Таким образом, вы не можете касаться какого-либо элемента тела страницы, который не определен в результирующей части функции post.

...