0

这里的问题是,在我的Rails应用程序中,我编写了两个咖啡脚本文件,都需要window.onscroll fn。我的两个咖啡文件在Rails中相互干扰

当我一次一个实现它们时,两者都可以正常工作,但是当我包含这两个参数时,脚本停止工作。

这是第一个脚本

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 

第二个脚本文件..

$(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文件合并成一个大文件。

当你在两个咖啡文件夹中都有$(window).scroll()时,两个函数都会运行。

解决方法很少。一种方法是编辑您的layout.html.erb以将控制器名称作为主体classid。然后你就可以在你的CoffeeScript检查到正确的网页上运行的正确JS

另一种方法是,确保你总是针对由idclass的元素,而不是避免使用像bodywindow

网站范围内的目标
+0

嗯..点是在同一页面上运行..一个控制右边栏和一个控制无限滚动 –