如何在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();
});
答案 0 :(得分:4)
您没有传递this
中scrollLink()
的内容。当它不理解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?。