jQuery focus()在jQuery应用的锚上工作在Chrome和IE中,而不是Firefox

时间:2009-12-31 21:54:24

标签: jquery dynamic hash focus

更新:此问题已经解决,因此加载我的示例网页时将不再出现有问题的Firefox行为

我的网页有很长的文字段落,所以我想让每个段落都是自己的永久链接。为此,我使用jQuery添加锚点并在页面加载后链接到每个段落。这在Chrome中完美运行。为了让它在IE中工作,我在应用锚之后添加了一个显式的jQuery focus()函数。但是,如果我第一次加载页面或刷新页面(例如http://www.readsherlock.com/study.php#p4),这在Firefox中不起作用。相关的javascript粘贴在下面。

 $(document).ready(function() {
    var i = 1;
    $("#text p").each(function(i){
        $(this).html('<a name="p' + i + '" href="#p' + i++ + '">' + $(this).html() + '</a>');
    });
    if(location.hash != '') 
        $(location.hash).focus();
  });

谢谢!

1 个答案:

答案 0 :(得分:0)

这适用于Firefox 3.0.16

$(document).ready(function() {
    var i = 1;
    $("#text p").each(function(i){
        $(this).html('<a name="p' + i + '" href="#p' + i++ + '">' + $(this).html() + '</a>');
    });
    if(location.hash != '') 
        location.hash = location.hash;
});

我没有检查过任何其他浏览器,因此您需要同时执行焦点和重置以触发所有浏览器。