我调整了滚动到ID的脚本,以在页面内容中查找h2标记,获取文本,将其连字符并将其作为ID添加到h2,然后创建h3滚动到的TOC目录列表侧栏中的-ID链接。
if($('h2').length >0 ) {
var ToC = '<h3 class="on-this-page">On this page</h3>' + '<nav role="navigation" class="table-of-contents widget_pages widget">' + '<ul>';
var el, title, titleFull, hyphenatedTitle;
$('h2').not(".not-on-this-page, .hotspot-title").each(function() {
el = $(this);
titleFull = el.text();
title = el.text().replace(/[^\w\s]/g, '');
hyphenatedTitle = title.replace(/ /g, '-');
$(el).attr('id', hyphenatedTitle );
var link = '#' + el.attr('id');
var newLine = '<li>' + '<a href="' + link + '"' + ' rel="m_PageScroll2id"' + '>' + titleFull + '</a>' + '</li>';
ToC += newLine;
}); //end each
ToC += '</ul>' + '</nav>';
$('.on-this-page-toc-wrapper').append(ToC); // show table of contents in element with class "on-this-page-toc-wrapper"
我现在正在建立一个英文和阿拉伯文的网站。
该脚本以阿拉伯语间歇性工作,经检查,似乎为每个单词创建了一个带有一个连字符的ID,而不是在阿拉伯语单词之间创建了一个连字符。结果,脚本在页面上存在单词数不同的h2时起作用,但如果两个h2的单词数相同,则脚本不起作用。我很确定问题出在这行中的正则表达式:
title = el.text().replace(/[^\w\s]/g, '');
如何修改此脚本,使其与我的英语和阿拉伯语标题均适用?
非常感谢您的帮助。
问题是您要删除字符串中的所有标点符号,但[^\w\s]
还要匹配阿拉伯字母和数字。
您可以使用修复以上代码
title = el.text().replace(/[\p{P}\p{S}]+/gu, '');
其中/[\p{P}\p{S}]+/gu
匹配任何Unicode标点和符号。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句