点击方法不解雇

时间:2011-09-05 07:18:00

标签: jquery

我有一个菜单,我需要在点击链接时滚动回顶部。我有这个代码。

$('a').click(function(){

$('.positionHelper').scrollTo( {top:'-800px', left:'0'}, 0 );

});

只有处理程序函数在firebug控制台中运行时,代码才有效,但是当我将点击附加到选择器时,它不起作用。唯一的例外是当我将它附加到$('html')时。点击。我解雇了

我用许多不同的选择器测试了它,但没有工作。

4 个答案:

答案 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 );

});