0

railscast 114 のガイドに従ってエンドレス ページを使用しようとしてwill_paginateいますが、coffeescript からエラーが発生します。

home.js.コーヒー

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 ボックスを見つけられないため、スクリプトがインデックス ファイルを読み取っていないようです...

助けてください... 終わりのないページの問題で 1 週間立ち往生しています。

コーヒースクリプトを更新する

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

2 に答える 2

1

これを機能させるには、DOM のロード後にセレクターを実行する必要があります。それを実現するために最初の行で関数を正しく定義しましたが、この関数 ( で実行されるdocument.ready) の本体は空です。

簡単に言えば、最初の行を除くすべてのコードを 1 レベルずつインデントします。

于 2013-02-02T13:10:20.083 に答える
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();
}
})
于 2013-02-02T16:29:01.617 に答える