2016-03-08 4 views
0

Как изменить этот javascript на coffeescript?Преобразование Javascript в Coffeescript

$(document).ready(function(){ 
$('a[href^="#"]').on('click',function (e) { 
    e.preventDefault(); 

    var target = this.hash; 
    var $target = $(target); 

    $('html, body').stop().animate({ 
     'scrollTop': $target.offset().top 
    }, 900, 'swing', function() { 
     window.location.hash = target; 
    }); 
}); 
}); 

Я попробовал этот код в моем проекте рельсы, но он не работает

$(document).on 'page:change', -> 
$('a[href^="#"]').click (event) -> 
    event.preventDefault() 

    target = this.hash 
    $target = $(target) 

    $('html, body').stop().animate{ 
     'scrollTop': $target.offset().top 
    }, 900, 
    'swing', -> 
     window.location.hash = target 

Есть ли у меня что-то не так?

+1

Просто используйте http://js2.coffee/ для преобразования javascript в кофе? –

+0

большое спасибо! –

+0

@HieuPham Отправьте это как ответ. –

ответ

1

Я думаю, что это будет работать:

$(document).ready()=> 
    $('a[href^="#"]').on 'click', (e)=> 
    e.preventDefault() 
    target = @hash 
    $target = $(target) 
    $('html, body').stop().animate scrollTop:$target.offset().top, 900, 'swing',()=> 
     window.location.hash = target 

Вы спросили, если вы сделали что-то не так, так вот несколько вещей, чтобы иметь в виду (извините, если это очевидно для вас уже):

  1. Первая строка вашей версии CoffeeScript полностью отличается от версии JavaScript. (document.ready против document.on('page-change'))

  2. CoffeeScript является чувствительным к пробелу. Я не знаю, является ли его просто форматирование StackOverflow или в вашем фактическом коде, но без пробелов во второй строке, обратный вызов, переданный в $(document).on 'page:change', ->, не является оператором. Другими слова, версия Java-бы $(document).on('page:change', function(){});

  3. Аналогичным образом, пространство, отступ строки 9 (тот, который начинается с 'scrollTop') и 11 (тот, который начинается с 'swing'), вероятно, вызовут проблемы также.

Смежные вопросы