点击方法没有触发

问题描述:

我有一个菜单,当点击链接时我需要滚动回页首。我有这个代码。点击方法没有触发

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

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

}); 

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

我用很多不同的选择器测试过,没有任何工作。

+0

找到了解答? –

如果您的html是按照生成的方式生成的(在页面加载后),您需要使用.live方法。您的代码将是:

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

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

}); 
+0

会检查这个,很可能是答案 –

在DOM加载后您是否附加了事件处理程序?

$(document).ready(function() { 
    $('a').click(function() { .... }; 
}); 

另一个可能的原因是,您的a标签稍后在应用程序生命周期中呈现。因此,你会使用其绑定:

$('a').live('click', function() { ... }); 

如果你是一个事件绑定到a元素,你必须使用preventDefault,以确保超链接不会发生这样有房的事件触发。

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

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

}); 

您可能需要将代码包装在文档就绪功能中。像这样:

$(document).ready(function() { 
    $('a').click(function(){ 
     $('.positionHelper').scrollTo({top:'-800px', left:'0'}, 0); 
     return false; 
    }); 
}); 

您的问题,现在可能是DOM没有完全装呢,所以click事件没有被绑定到像你想的锚(一个或多个)。此外,您可能希望添加一个返回false或一个“阻止默认值”,以确保在href属性中指定的实际url没有被浏览器跟踪,但只是您的代码被执行。