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

我已经找到了一个jQuery函数,它将首先查看页面并搜索< cite>标签。然后,它查看其中包含的文本并搜索连字符。如果找到一个,则连字符前的所有内容都将用作标记中的文本。然而,连字符之后的所有内容都用于打开该网址的新窗口的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版本...所以,我删除了它,只是加载了我在静态页面中加载的相同版本,但仍然没有骰子。

有什么想法吗?

有帮助吗?

解决方案

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

(拒绝误导自动&#8220;智能&#8221;排版,小孩!En-dash甚至不是正确的标记,因为它通常表示数字范围,如1&#8211; 10. em-dash&# 8216;&#8212;&#8217;在这里会更合适。)

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

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

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

其他提示

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

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top