jQuery动态更改标题

时间:2015-04-08 14:09:34

标签: javascript jquery

我正在创建一个有点大的静态html网站,所以我开始将其分解为模板。我包括一个header.php并遇到了标题问题。我想得到页面的名称,即about.php并在标题<title>Company name - About</title>中输出

我得到了这样的工作:

var name = location.pathname.split('/').slice(-1)[0];
var title = name.slice(0, -4);
var finalTitle = "Company-" + title;
$(document).attr("title", finalTitle);

除了索引之外没有显示名称,因此效果很好。我尝试按照以下方式编写if语句:

var name;
if (location.pathname.split('/').slice(-1)[0] === ""){
   name = "Home";
} else {
   name = location.pathname.split('/').slice(-1)[0];
}

现在我不太清楚为什么这不起作用。

2 个答案:

答案 0 :(得分:0)

好的,所以经过咨询后可以在评论中遵循我的PHP路线。这不会帮助任何寻找javascript答案的人,但这是我正在使用的,现在有效:

<?php 
  $title = ucwords(str_replace(array("-","/"),array(" "," - "),substr($_SERVER['REQUEST_URI'], 1))); 
  $afterTitle = preg_replace('/\\.[^.\\s]{3,4}$/', '', $title);
  $final;
  if ($afterTitle == "Company - "){
      $final = "Company - Home";
  } else {
      $final = preg_replace('/\\.[^.\\s]{3,4}$/', '', $title);
  }
 ?>

答案 1 :(得分:0)

最简单的方法是:

/*
 * This gets the path as an array and tried to get the last subdirectory, 
 * if isn't return undefined in wich case will set the title to 'Home';
 */
var title = window.location.pathname.replace(/^\/|\/$/g,'').split('/').pop() || 'Home';

//This part assign the title capitalizing it.
$('title').html(title.charAt(0).toUpperCase() + title.slice(1))

对于任何想要添加此功能的人来说,这是一个代码,它为每个子目录的html标记添加类名,并为url的最后一部分添加id。这可以改变o简单用于设置标题,就像原始问题一样。

// Gets the path subdirectories as an array and use the last as the id.
var path = window.location.pathname.replace(/^\/|\/$/g,'').split('/'), 
    id = path.pop() || 'index';

// Adds the classes and id to the html tag
$('html').attr("class", path.join(' '))
    .attr('id', id);

//Assign the title capitalizing the id
$('title').html(id.charAt(0).toUpperCase() + id.slice(1))

此脚本的主要目标是,您可以使用head.js doit等ID来为每个页面添加样式。