使用jQuery </cite>创建一个<cite>标签

时间:2009-11-27 23:15:39

标签: jquery html wordpress click

好的,所以这里很瘦......

我已经找到了一个jQuery函数,它将首先查看页面并搜索&lt; cite&gt;标签。然后,它查看其中包含的文本并搜索连字符。如果找到一个,则连字符前的所有内容都将用作标记中的文本。然而,连字符之后的所有内容都用于打开该网址的新窗口的onlick事件。

这是它的样子:

 // Custom function for <cite> tags making them clickable
 $('cite:contains("-")').each(function(){
  var split=$(this).html().match( /([\s\w]+)[\-](.+)$/i );
  $(this).text(split[1]);
  $(this).click(function(){
   window.open( split[2] );
   return false;
  });
 });

以下是它的使用方法:

<blockquote>
This is quoted text from some article somewhere on the web... 
<cite>Source of Quote - http://quotedsitesource.com</cite>
</blockquote>

现在,我已经在静态页面上完美运行了...请参阅此处:http://blatantwasteofspace.com/crapadoodledoo/cite-test.html

然而,当我尝试将其作为一个在WordPress主题中加载的脚本来实现时,它失败了!看到这里:http://blatantwasteofspace.com/at-random/quotes-time我不明白......我的意思是,我正在加载完全相同的jQuery版本。起初我以为可能是因为我使用wp_enqueue_script('jquery')加载jQuery,因为它加载了noconflict版本...所以,我删除了它,只是加载了我在静态页面中加载的相同版本,但仍然没有骰子。

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

WordPress会自动将您的ASCII -短划线转换为 en-dashes(在页面中显示为&#8211;)。此字符与正则表达式中的ASCII短划线不匹配。

(对于错误的自动“智能”排版说不,小孩!En-dash甚至不是正确的标记,因为它通常表示像1-10这样的数字范围。这里的em-dash' - '更合适。 )

为什么引用不应该是实际的链接有什么好的理由吗?它还可以使处理更容易。例如

<cite><a href="http://blah">Blah</a></cite>

$('cite a').click(function(e) {
    var pop= window.open(this.href);
    return pop && !pop.closed;
});

答案 1 :(得分:0)

可能是您的脚本在内容之前加载。 如果你尝试这样的话:

$(document).ready(function(){
 $('cite:contains("-")').live('click', function(){
  var split=$(this).html().match( /([\s\w]+)[\-](.+)$/i );
  window.open( split[2] );
  return false;
 });
});

然而,这仍然会显示文本中的链接而不是删除它(并且一旦单击标签就会进行解析,而不是之前),但至少它应该有效。