Coffeescript无法找到div - railscast 114修订版

时间:2013-02-02 13:04:16

标签: jquery ruby-on-rails-3.1 coffeescript railscasts

尝试使用will_paginate使用无限页面来跟踪railscast 114的指南,但我从我的coffeescript中收到错误:

home.js.coffee

jQuery ->
if $('.pagination').length
  $(window).scroll ->
   url = $('.pagination .next_page').attr('href')
   if url && $(window).scrollTop() > $(document).height() - $(window).height() - 50
     $('.pagination').text("Fetching more products...")
     $.getScript(url)
$(window).scroll()

在线:

   if $('.pagination').length

我收到以下错误:

Uncaught TypeError: Cannot read property 'length' of null

似乎脚本没有读取我的索引文件,因为脚本找不到任何我的div-box ...

请帮助......一直坚持这个无尽页面的问题一周。

更新coffeescript

jQuery ->
  if $('.pagination').length
    $(window).scroll ->
      url = $('.pagination .next_page').attr('href')
      if url && $(window).scrollTop() > $(document).height() - $(window).height() - 50
        $('.pagination').text("Fetching more products...")
        $.getScript(url)
    $(window).scroll()

2 个答案:

答案 0 :(得分:1)

为了使其工作,您需要在加载DOM后执行选择器。你在第一行中正确定义了一个函数来实现它,但是这个函数(在document.ready上执行)有一个空体。

简单来说,将除第一行之外的所有代码缩进一级。

答案 1 :(得分:0)

通过将coffeescript移动到application.js中,在jQuery中重写它然后调用var $ j = jQuery.noConflict();并在evert $ -sign前附加$ j标志。不知道为什么会这样。认为它与同时运行的多个脚本有关。

现在看起来像这样:

var $j = jQuery.noConflict();
$j(function() {
if ($j('.pagination').length) {
$j(window).scroll(function() {
var url;
url = $j('.pagination .next_page').attr('href');
if (url && $j(window).scrollTop() > $j(document).height() - $j(window).height() - 50) {
$j('.pagination').text("Fetching more products...");
return $j.getScript(url);
}
});
return $j(window).scroll();
}
})