好的,所以这里很瘦......
我已经找到了一个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版本...所以,我删除了它,只是加载了我在静态页面中加载的相同版本,但仍然没有骰子。
有什么想法吗?
答案 0 :(得分:3)
WordPress会自动将您的ASCII -
短划线转换为–
en-dashes(在页面中显示为–
)。此字符与正则表达式中的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;
});
});
然而,这仍然会显示文本中的链接而不是删除它(并且一旦单击标签就会进行解析,而不是之前),但至少它应该有效。