使用jQuery匹配变量文本?

时间:2010-04-09 19:30:10

标签: jquery squarespace

我有一个侧边栏导航,列出了页面旁边的博客条目标题。我正在尝试编写一些jquery,它将检查当前完整博客条目页面标题中的文本,并将其与侧栏导航中的相应标题相匹配,以便我可以将类应用于活动状态链接的样式...但我不太明白!以下是示例页面的链接:http://ncw-commercial.com/property-listings/eastpoint-plaza-lot.html,以下是我当前的代码。我也试过使用:contains但无法弄清楚如何使用变量而不是直接文本。

$('.single-journal-entry-wrapper .journal-entry .title').each(function(){ 
      var activeTitle = $(this).text();
      $(".feedburnerFeedBlock .headline a").filter(function(index) {
         return $(this).text() == "activeTitle";
      }).parent().addClass("activeTitle");
}); 

1 个答案:

答案 0 :(得分:1)

我认为你非常接近(假设选择器是正确的)。只需移除activeTitle周围的引号(否则您将与字符串"activeTitle"进行比较):

$('.single-journal-entry-wrapper .journal-entry .title a').each(function(){ 
      var activeTitle = $(this).text();
      $("#sidebar1 .section .headline a").filter(function(index) {
         return $(this).text() == activeTitle;
      }).parent().addClass("activeTitle");
});

您还可以使用:contains()选择器:

$('.single-journal-entry-wrapper .journal-entry .title a').each(function(){ 
      var activeTitle = $(this).text();
      $("#sidebar1 .section .headline a:contains('" + activeTitle + "')")
      .parent().addClass("activeTitle");
});

该页面的链接没有多大帮助。不知何故,我没有看到你想要哪个标题与哪个链接相匹配。遗憾。

<强>更新

好的我明白了。问题是,两个字符串(标题和链接中的标题不匹配因为标题中有&nbsp;Eastpoint Plaza&nbsp;Lot)其中的链接边栏没有。虽然如果你拨打.text(),这会被转换为空白,但它在某种程度上不匹配。

现在可以通过.html()获取标题并用空格替换&nbsp;来解决此问题:

$('.single-journal-entry-wrapper .journal-entry .title a').each(function(){ 
      var activeTitle = $(this).html().replace('&nbsp;', ' ');
      $("#sidebar1 .section .headline a:contains('" + activeTitle + "')")
      .parent().addClass("activeTitle");    
});

为了测试我复制了所有HTML代码,现在它对我有用。试试看。我认为最大的问题是,标题中可能包含HTML编码字符,因此如果遇到更多问题,请找一个可以转换它们的库。