in this page(日语),链接使用jQuery平滑过渡到它们被引用的ID,但由于它使用的是日文字符(SEOwise
),它不起作用。
// Smooth scroll
$('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 - 200
}, 1000);
return false;
}
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="sommaire bullets" role="navigation">
<ol>
<li><a href="#北海道エリアで選べる電力会社">北海道エリアで選べる電力会社</a></li>
<li><a href="#北海道エリア電力会社・電気料金">北海道エリアの電力会社と電気料金プラン</a></li>
</ol>
</div>
<h2 id="北海道エリアで選べる電力会社">北海道エリアで選べる電力会社</h2>
<h2 id="北海道エリア電力会社・電気料金">北海道エリアの電力会社と電気料金プラン</h2>
如果我将href
和ID更改为任何基于拉丁语的措辞,它会按预期工作。
有什么方法可以让jQuery与日文字符一起使用?
答案 0 :(得分:0)
您需要先解码this.hash
。这可以使用decodeURIComponent()
完成。
这应该有效:
// Smooth scroll
$('a[href*=#]:not([href=#])').click(function() {
if (location.pathname.replace(/^\//,'') == this.pathname.replace(/^\//,'') && location.hostname == this.hostname) {
var target = $(decodeURIComponent(this.hash));
target = target.length ? target : $('[name=' + this.hash.slice(1) +']');
if (target.length) {
$('html,body').animate({
scrollTop: target.offset().top - 200
}, 1000);
return false;
}
}
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="sommaire bullets" role="navigation">
<ol>
<li><a href="#北海道エリアで選べる電力会社">北海道エリアで選べる電力会社</a></li>
<li><a href="#北海道エリア電力会社・電気料金">北海道エリアの電力会社と電気料金プラン</a></li>
</ol>
</div>
<h2 id="北海道エリアで選べる電力会社">北海道エリアで選べる電力会社</h2>
<h2 id="北海道エリア電力会社・電気料金">北海道エリアの電力会社と電気料金プラン</h2>
&#13;
答案 1 :(得分:0)
Symbol
&#13;
// Smooth scroll
$('a[href*=#]:not([href=#])').click(function() {
if (location.pathname.replace(/^\//,'') == this.pathname.replace(/^\//,'') && location.hostname == this.hostname) {
$('body, html').stop().animate({
'scrollTop': $($(this).attr('href')).offset().top
}, 980);
return false;
}
});
&#13;
抱歉,我不确定您的代码是什么意思,但我已经为您简化了。