Javascript 使用jquery滚动到div

Javascript 使用jquery滚动到div,javascript,jquery,Javascript,Jquery,我有一个以前可能已经回答过的问题,但我无法使代码正常工作 我有一个 $('page contact')。在('click',函数(事件){ var target=$(this.href); if(target.length){ event.preventDefault(); $('html,body')。设置动画({ scrollTop:$(“#页面联系人”).offset().top }“慢”); } }); 一个原因是href属性返回锚点的绝对路径,即“http://www.example.

我有一个以前可能已经回答过的问题,但我无法使代码正常工作

我有一个

$('page contact')。在('click',函数(事件){
var target=$(this.href);
if(target.length){
event.preventDefault();
$('html,body')。设置动画({
scrollTop:$(“#页面联系人”).offset().top
}“慢”);
}
});

一个原因是
href
属性返回锚点的绝对路径,即
“http://www.example.com#hash“
。由于jQuery找不到目标元素,因此集合的
长度为
0
,如果未执行
块,则执行

可以使用返回原始
href
属性的
this.getAttribute('href')
,也可以使用返回
href
属性的哈希段的
hash
属性,而不是
href
属性

还要注意,您的单击处理程序绑定到目标
元素,而不是
a
元素

$('li a').on('click', function(event) {
    var target = $(this.hash);
    if( target.length ) {
       event.preventDefault();
       $('html, body').animate({
         scrollTop: target.offset().top
        }, "slow");
     }
});

原因之一是
href
属性返回锚的绝对路径,即
”http://www.example.com#hash“
。由于jQuery找不到目标元素,因此集合的
长度为
0
,如果未执行
块,则执行

可以使用返回原始
href
属性的
this.getAttribute('href')
,也可以使用返回
href
属性的哈希段的
hash
属性,而不是
href
属性

还要注意,您的单击处理程序绑定到目标
元素,而不是
a
元素

$('li a').on('click', function(event) {
    var target = $(this.hash);
    if( target.length ) {
       event.preventDefault();
       $('html, body').animate({
         scrollTop: target.offset().top
        }, "slow");
     }
});
$(this.href)
选择器无效,因此
target
变量始终为空,请更改var
target=$(this.href)
var target=this.href以获取链接

$(this.href)
选择或充当

$("http://stackoverflow.com/questions/29515247/scrolling-to-a-div-using-jquery#29515468")
>对象[]
$(this.href)
选择器无效,因此
target
变量始终为空,请更改var
target=$(this.href)
var target=this.href以获取链接

$(this.href)
选择或充当

$("http://stackoverflow.com/questions/29515247/scrolling-to-a-div-using-jquery#29515468")
>对象[]
实际上是一件很小的事情

$('.page-contact').on('click', function(event) {
     //..
};
将其连接到单击目标div,而不是单击按钮。 将事件连接到您的按钮拥有的类,它将工作

$('#scrollButton').on('click', function(event) {
    var target = $(this.hash);
    if( target.length ) {
        event.preventDefault();    
        $('html, body').animate({
            scrollTop: target.offset().top
        }, "slow");
    }
});

尝试一下:

实际上是一些非常小的东西

$('.page-contact').on('click', function(event) {
     //..
};
将其连接到单击目标div,而不是单击按钮。 将事件连接到您的按钮拥有的类,它将工作

$('#scrollButton').on('click', function(event) {
    var target = $(this.hash);
    if( target.length ) {
        event.preventDefault();    
        $('html, body').animate({
            scrollTop: target.offset().top
        }, "slow");
    }
});

尝试小提琴:

您的选择器错误,请更改为:

$('a[href="#page-contact"]').on('click', function(event) {
    var target = this.getAttribute("href");
    if($(target).length) {
       event.preventDefault();
       $('html, body').animate({
           scrollTop: $("#page-contact").offset().top
       }, "slow");
    }
});

您的选择器错误,请更改为:

$('a[href="#page-contact"]').on('click', function(event) {
    var target = this.getAttribute("href");
    if($(target).length) {
       event.preventDefault();
       $('html, body').animate({
           scrollTop: $("#page-contact").offset().top
       }, "slow");
    }
});

“但是没有动画”意味着jQuery代码片段实际上失败了,您得到的是浏览器的默认行为。change
var target=$(this.href)
var target=this.href那么代码应该可以工作否,仍然是相同的问题:(“但是没有动画”意味着jQuery代码片段实际上失败了,您得到的是浏览器的默认行为。更改
var target=$(this.href);
var target=this.href;
那么代码应该可以工作否,仍然是相同的问题:(