我创建了这个功能:
function go_to($valor) {
var tamano = $valor.offset().top;
tamano = tamano - 50;
$('html, body').animate({
scrollTop: tamano
}, 2000);
};
我从菜单中这样称呼它:
<ul class="right">
<li><a onclick="go_to($('#section01'));">Section 01</a></li>
<li><a onclick="go_to($('#section02'));">Section 02</a></li>
<li><a onclick="go_to($('#section03'));">Section 03</a></li>
<li><a onclick="go_to($('#section04'));">Section 04</a></li>
</ul>
我的问题:还有其他更好的方法来调用onclick
函数并发送其部分ID吗?
答案 0 :(得分:3)
是的,您不应该使用侵入式JS,而是在标记之外声明事件处理程序:
<强> JS 强>
$('.right a').click(function (event) {
event.preventDefault();
$('html, body').animate({
scrollTop: $(this.href).offset().top - 50
}, 2000);
});
<强> HTML 强>
<ul class="right">
<li><a href="#section01'">Section 01</a></li>
<li><a href="#section02'">Section 02</a></li>
<li><a href="#section03'">Section 03</a></li>
<li><a href="#section04'">Section 04</a></li>
</ul>
答案 1 :(得分:1)
试试这段代码:
<ul class="right">
<li><a class="link">Section 01</a></li>
<li><a class="link">Section 02</a></li>
</ul>
$(".link").click(function(){
var tamano = $(this).offset().top;
tamano = tamano - 50;
$('html, body').animate({
scrollTop: tamano
}, 2000);
});
答案 2 :(得分:1)
您必须将HTML更改为:
<ul class="right">
<li><a href="#section01">Section 01</a></li>
...
</ul>
你的JS应该是
$('.right').on('click','a',function(e){
e.preventDefault(); // prevent default click behavior
var target = $(this).attr('href'); //assign value of a's 'href' to 'target'
go_to(target); // use your function
});
你的功能应该是:
function go_to(valor) {
var tamano = $(valor).offset().top;
tamano = tamano - 50;
$('html, body').animate({
scrollTop: tamano
}, 2000);
};