【问题标题】:jquery to add ids to all paras to make them all linkable.jquery 将 id 添加到所有 paras 以使它们都可链接。
【发布时间】:2014-11-16 07:04:58
【问题描述】:

我有一个网站,上面有数千个 htm 文档。有时我需要派人到特定的段落阅读。 我正在寻找的是一个 jquery 插件,它只是将 id 添加到所有段落中,使它们可链接,因此我们可以将它们发送到:http://www.demo.com/index.html#p_10 例如。

【问题讨论】:

  • 你可以使用 jquery each 添加属性,但问题是它会在读取 url 后添加属性。
  • 为什么会有问题?
  • 为什么是插件?我建议编写一个小的 sn-p 循环遍历所需的 p 元素并向它们添加 id 属性。

标签: jquery html hyperlink


【解决方案1】:

我认为你想要的只是这样一个简单的代码

jQuery(document).ready(function() {
    jQuery('p').each(function(index, value) {
        value.id = '_p' + index;
    });

    $('html, body').animate({
        scrollTop: $(window.location.hash).offset().top
    }, 500);
});

这是一个也显示 id 集的示例。

http://jsfiddle.net/ekftprLt/2/

【讨论】:

  • 实际上不会转到 P
  • 如果你使用锚点
  • 你是对的,除非你点击浏览器的 URL 字段并按下回车键,否则它不会滚动。添加了滚动动画滚动到段落,感谢您的评论。
  • 太棒了,完美地完成了这项工作,非常感谢佩德罗和其他所有人。
  • 请查看我的更新,它不会修改 DOM,并且会比上面的要快
【解决方案2】:

为什么是插件?而且不需要身份证

如果您将脚本插入页面或现有的外部脚本,这应该可以工作

注意:这不会以任何方式修改 DOM,并且比 .each 快得多

$(function() {
  var pIndexPos = location.hash.indexOf("p_");
  if (pIndexPos!=-1) {
    var pIndex = parseInt(location.hash.substring(pIndexPos+2),10)+1; // 1based for nth
    var offsetTop = $("p:nth-child("+pIndex+")").offset().top-20; // - height of item
    $('html, body').animate({
      scrollTop: offsetTop
    },500);
  }
}); 

【讨论】:

  • 亲爱的 mplungjan,感谢您的回复,我相信这将是某人的答案,但对我自己来说,我需要确切地看到将某人引导到哪里,所以我确实需要 ID .
  • 什么会使 ID 对您可见?除非您在每个段落的 HTML 中插入 §1、§2 或其他内容,否则页面上不会有任何差异。
  • 嗨 mplungjan,我可以轻松地检查元素并获取 ID,这样我就可以省去计算段落等。
  • 无论你的船是什么
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-05-17
  • 2011-04-30
  • 2015-03-14
  • 2011-08-02
  • 2019-09-27
  • 2014-10-14
  • 2016-07-22
相关资源
最近更新 更多