2015-12-09 6 views
0

Как создать функцию в jQuery и вызвать ее?jQuery - Создайте функцию и назовите ее

Это не кажется правильным:

var scrollLink = function() { 
     $('html, body').animate({ 
      scrollTop: $($(this).attr('href')).offset().top-20 
     }, 300); 
    }; 

    $('.js-ask').click(function(e) { 
     e.preventDefault(); 
     $('[href="' + this.dataset.target + '"]').tab('show'); 
     reportReadMessages(); 
    }); 

    $(".js-scroll").click(function(e, scrollLink) { 
     e.preventDefault(); 
     scrollLink(); 
    }); 

ответ

4

Вы не передавая то, что в scrollLink()this. Это функция с пустыми параметрами, когда она не понимает, что такое this. Поэтому, пожалуйста, измените его на:

$('.js-ask').click(function(e) { 
    e.preventDefault(); 
    $('[href="' + this.dataset.target + '"]').tab('show'); 
    reportReadMessages(); 
}); 

$(".js-scroll").click(function(e) { 
    e.preventDefault(); 
    $('html, body').animate({ 
     scrollTop: $($(this).attr('href')).offset().top-20 
    }, 300); 
}); 

Вы не передавая scrollLink в правильном направлении. Вот почему это не сработало.

Или вы можете продолжить функцию следующим образом:

$.fn.scrollLink = function() { 
    $('html, body').animate({ 
     scrollTop: $($(this).attr('href')).offset().top-20 
    }, 300); 
}; 

И вы можете позвонить на элементы, как:

$(this).scrollLink(); 
$(selector).scrollLink(); 

См How to add a function to jQuery? для получения дополнительной информации.

+1

Ницца! Спасибо. Да, жаль, что я только начинаю с jQuery. Но ваше решение делает многое для меня более ясным. Благодарю. – brunodd

+0

@brunodd Зачем жалко человека? –

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