我有一个抓取URL路径的JQuery函数,并将其添加为正文类:
var pathname = window.location.pathname;
var pathSlashesReplaced = pathname.replace(/\//g, " ");
var pathSlashesReplacedNoFirstDash = pathSlashesReplaced.replace(" ","");
var newClass = pathSlashesReplacedNoFirstDash.replace(/\(\d*\)/g, '').replace(/\s/, '-');
$("body").addClass(newClass);
if ( $("body").attr("class") == "")
{
$("body").addClass("class");
}
..所以,如果url类似于/ myapp / user / list,则body类最终为:
<body class="myapp-user list">
问题是我希望所有三个单词都带有破折号,所以它应该是:
<body class="myapp-user-list">
..然后我可以使用CSS主题:
.myapp-user-list {
}
我很确定我的RegEx存在问题,但我无法弄清楚在哪里。我尝试了各种文本函数,但问题是它从页面中抓取了所有文本并将其作为正文类:
var text = $(this).text();
var newClass = $.trim(text.replace(/\(\d*\)/g, '').toLowerCase()).replace(/\s/, '-');
答案 0 :(得分:2)
尝试:
var newClass = location.pathname.split('/').join('-').replace(/(^-|-$)/g,''),
$body = $("body").addClass(newClass);
if ($body.attr("class") == "") {
$body.addClass("class");
}
我会避免使用类名class
。它可能会带来问题。
答案 1 :(得分:1)
尝试将g
修饰符添加到第二个替换中以替换所有空格,而不仅仅是第一个。
var newClass = pathSlashesReplacedNoFirstDash.replace(/\(\d*\)/g, '').replace(/\s/g, '-');
答案 2 :(得分:0)
我认为应用这两个正则表达式可以完成这项工作。
"/\//-/g" Will change all slashes to -
"/-//" Will only remove the first -