我有一个菜单,我需要在点击链接时滚动回顶部。我有这个代码。
$('a').click(function(){
$('.positionHelper').scrollTo( {top:'-800px', left:'0'}, 0 );
});
只有处理程序函数在firebug控制台中运行时,代码才有效,但是当我将点击附加到选择器时,它不起作用。唯一的例外是当我将它附加到$('html')时。点击。我解雇了
我用许多不同的选择器测试了它,但没有工作。
答案 0 :(得分:1)
在加载DOM后附加事件处理程序吗?
$(document).ready(function() {
$('a').click(function() { .... };
});
另一个可能的原因是您的a-tag将在应用程序生命周期的后期呈现。因此,您可以使用以下方法绑定它:
$('a').live('click', function() { ... });
答案 1 :(得分:1)
您可能需要将代码包装在文档就绪函数中。像这样:
$(document).ready(function() {
$('a').click(function(){
$('.positionHelper').scrollTo( {top:'-800px', left:'0'}, 0 );
return false;
});
});
现在您的问题可能是DOM尚未完全加载,因此click事件不会像您想要的那样绑定到锚点。此外,您可能希望添加返回false或“防止默认值”,以确保浏览器不会遵循href属性中指定的实际URL,但只执行代码。
答案 2 :(得分:1)
如果您的html是动态生成的(页面加载后),则需要使用.live
方法。你的代码是:
$('a').live('click', function(){
$('.positionHelper').scrollTo( {top:'-800px', left:'0'}, 0 );
});
答案 3 :(得分:0)
如果要将事件绑定到a
元素,则必须使用preventDefault
以确保不会发生超链接,以便可以触发事件。
$('a').click(function(event){
event.preventDefault();
$('.positionHelper').scrollTo( {top:'-800px', left:'0'}, 0 );
});