0

私のレールアプリでは、2つのコーヒースクリプトファイルに両方ともwindow.onscroll fnが必要です。2つのコーヒーファイルがRailsで互いに干渉する

一度に1つずつ実装するとうまくいきますが、両方を含めると、 スクリプトが機能しなくなります。ここで

は、最初のスクリプト

rightBarControl = -> 
    windowHeight = $(window).height() 
    scrollHeight = $(window).scrollTop() 
    rightBarWidth = $('#index_top_confession_div').width() 
    #20% of .main width 
    rightBarHeight = $('#index_top_confession_div').outerHeight() 
    rightBarOffset = $('#index_confessions').offset().left + $('#index_confessions').outerWidth() 
    rightBarTop = 75 
    #30 because .head is 30px high 
    if windowHeight - 75 < rightBarHeight 
    #Again including 30 because of .head 
    rightBarTop = windowHeight - rightBarHeight 
    if windowHeight + scrollHeight - 75 >= rightBarHeight 
    $('#index_top_confession_div').css 
     position: 'fixed' 
     left: rightBarOffset 
     top: rightBarTop 
    else 
    $('#index_top_confession_div').css 
     position: 'static' 
     left: rightBarOffset 
     top: rightBarTop 
    return 

$('#search').addClass 'form-control' 
$(window).scroll rightBarControl 
#Run control on window scroll 
$(window).resize rightBarControl 

2番目のスクリプトファイル..です

$(document).ready -> 
    if $('.pagination').length 
    $(window).scroll -> 
     console.log('hey'); 
     url = undefined 
     url = $('.pagination .next_page').attr('href') 
     if url and $(window).scrollTop() > $(document).height() - $(window).height() - 200 
     $('.pagination').html '<img src = \'/uploads/loader/loader.gif\' alt=\'loading...\'/>' 
     return $.getScript(url) 
     return 
    return $(window).scroll() 
    return 

答えて

0

アセット・パイプラインは、一つの大きなファイルにすべてのCSSやJavaScriptファイルを結合します。

両方のcoffeescriptファイルに$(window).scroll()があると、両方の機能が実行されます。

これを回避する方法はいくつかあります。 1つは、コントローラ名が本体classまたはidになるようにlayout.html.erbを編集することです。そして、あなたは正しいページで正しいのJSを実行するためにあなたのCoffeeScriptでそれを確認することができますが

もう一つの方法は、あなたが常にidまたはclassによって要素をターゲットにすることです、bodyまたはwindow

のようなウェブサイトの広いターゲットを使用しないようではありません
+0

umm ..ポイントは両方とも同じページで実行されます。一方は右のバーを制御し、もう一方は無限のスクロールを制御します –

関連する問題