如何使页面锚点不区分大小写?

时间:2016-03-24 15:32:31

标签: jquery html

使用jQuery,我怎样才能使任何案例的锚点网段与页面的锚点和id一起使用?例如,examples.com#AnChOr应该滚动到a[name="anchor"]div[id="ANCHOR"],无论它首先找到(当然,这假设我们在页面上有非模糊的锚点)。

3 个答案:

答案 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>