【问题标题】:Coffeescript cannot find div - railscast 114 revisedCoffeescript 找不到 div - railscast 114 已修改
【发布时间】:2013-01-17 16:50:39
【问题描述】:

尝试使用 will_paginate 跟随 railscast 114 的指南,使用无穷无尽的页面,但我的咖啡脚本出现错误:

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 框...

请帮助...被这个无尽页面的问题困扰了一周了。

更新咖啡脚本

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()

【问题讨论】:

  • 请注意,“更新”版本在功能上有所不同。它将编译为不同的 JavaScript 代码。我想你可以在这里同时解决两个问题。

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


【解决方案1】:

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

简单来说就是将除第一行以外的所有代码缩进一级。

【讨论】:

  • 感谢您的快速回复!它似乎没有工作......我真的只是从 railscast 复制粘贴了咖啡脚本代码,但它似乎没有工作。
  • 如果我尝试:$(document).ready -> alert 'blah' 在 if 语句之前我收到以下错误:Uncaught TypeError: Object # has no method 'ready'如果这有帮助...
【解决方案2】:

解决这个问题的方法是将 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();
}
})

【讨论】:

  • 还有哪些其他库使用?穆工具?泽普托?原型?与 jQuery 发生冲突是很不寻常的。
  • 我使用的是原型。我很确定我禁用了它。花了我很长时间才弄清楚如何解决冲突...... *请注意任何有同样问题的人。你必须在你的 index.js.erb 中做同样的事情
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-05-13
  • 2012-11-01
  • 2012-09-27
  • 2013-06-25
  • 2014-02-11
  • 2018-11-30
  • 1970-01-01
相关资源
最近更新 更多