我正在学习jquery并找到了一个用于在点击上平滑滚动的脚本,这非常有效,但我不理解它,我想了解代码以及它为什么会这样做:
$(function() {
$('a[href*="#"]:not([href="#"])').click(function() {
if (location.pathname.replace(/^\//,'') == this.pathname.replace(/^\//,'') && location.hostname == this.hostname) {
var target = $(this.hash);
target = target.length ? target : $('[name=' + this.hash.slice(1) +']');
if (target.length) {
$('html, body').animate({
scrollTop: target.offset().top
}, 1000);
return false;
}
}
});
});
首先我明白它开始于:
$('a[href*="#"]:not([href="#"])').click()
这就是每当你点击某个带有href链接的东西时,#'#'
然后
if(location.pathname.replace(/^\//,'') == this.pathname.replace(/^\//,'') && location.hostname == this.hostname)
我不知道那是什么
这两个:
var target = $(this.hash);
target = target.length ? target : $('[name=' + this.hash.slice(1)
什么是" .hash"?那'怎么样?'?和':'?
其余的我得到了它。
谢谢!
答案 0 :(得分:1)
hash
是#
后面的字符串。因此,在网址index.html#path
中,哈希将为path
。 pathname
检查它是否在相同的原始主机名和页面下,因此它是一个指向同一页面并将滚动的URL,如果它是另一个页面,则滚动没有任何意义。
三元运算符与if()
语句类似,但简写如下:
var a = (b == 1) ? "b equal one" : "b not equal one";
它与:
相同var a;
if(b == 1) {
a = "b equal one";
} else {
a = "b not equal one";
}