使用jQuery,我怎样才能使任何案例的锚点网段与页面的锚点和id
一起使用?例如,examples.com#AnChOr
应该滚动到a[name="anchor"]
或div[id="ANCHOR"]
,无论它首先找到(当然,这假设我们在页面上有非模糊的锚点)。
答案 0 :(得分:1)
// Wait for images to load for proper offsets
$(window).load(function()
{
// Compare lowercase hashes
var hash = window.location.hash.substring(1).toLowerCase();
// Check IDs
$('[id]').each(function()
{
if ($(this).attr('id').toLowerCase() === hash)
{
$(window).scrollTop($(this).offset().top);
}
});
// Check named anchors
$('a[name]').each(function()
{
if ($(this).attr('name').toLowerCase() === hash)
{
$(window).scrollTop($(this).offset().top);
}
});
});
答案 1 :(得分:0)
如果你可以控制实际名称/ id值的大小写,你可以用脚本改变location hash标签的大小写,一直把它设置为小写(或使用.toUpperCase()大写):
window.location.hash = window.location.hash.toLowerCase();
如果你真的需要扫描,这是一个例行程序。
$(document).ready(function() {
var hash = window.location.hash.substr(1);
$('a[name], div[id]').each(function(i,e) {
if(e.tagName =="A" && hash.toLowerCase()==e.name.toLowerCase()) {
window.location.hash = '#'+e.name;
return false;
}
else if(hash.toLowerCase() == e.id.toLowerCase()) {
window.location.hash = '#'+e.id;
return false;
}
});
});
答案 2 :(得分:0)
<script>
jQuery.expr[':'].Contains = function(a, i, m) {
return jQuery(a).text().toUpperCase()
.indexOf(m[3].toUpperCase()) >= 0;
};
// OVERWRITES old selecor
jQuery.expr[':'].contains = function(a, i, m) {
return jQuery(a).text().toUpperCase()
.indexOf(m[3].toUpperCase()) >= 0;
};
</script>