0

Das Problem hier ist, dass ich in meiner Rails App schreibe ich 2 Kaffee-Skript-Dateien beide window.onscroll fn.Meine zwei Kaffeedateien stören sich gegenseitig in Rails

Wenn ich sie einzeln implementieren beide funktioniert gut, aber wenn ich beide, , das Skript nicht mehr funktioniert. Hier

ist das erste Skript

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 

Die zweite Skriptdatei ..

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

Antwort

0

Asset-Pipeline verbindet alle CSS und Javascript-Dateien in eine große Datei.

Wenn Sie in beiden coffeescript-Dateien $(window).scroll() haben, werden beide Funktionen ausgeführt.

Es gibt einige Möglichkeiten, dies zu umgehen. Eine besteht darin, Ihre layout.html.erb zu bearbeiten, um einen Controller-Namen als Körper class oder id zu haben. Dann können Sie es in Ihrem Coffee überprüfen Sie die korrekte js auf der richtigen Seite

Ein anderer Weg laufen soll sicherstellen, dass Sie immer die Elemente zielen durch die id oder class, vermeiden nicht Website weite Ziele wie body oder window mit

+0

umm .. der Punkt wird beide auf der gleichen Seite ausgeführt .. ein Steuerelement die rechte und ein Steuerelement das unendliche Scrollen –

Verwandte Themen