Как сделать <cite> тег кликабельным с помощью jQuery
Вопрос
Итак, вот что самое интересное...
Я разработал функцию jQuery, которая сначала просматривает страницу и выполняет поиск по <cite> тегам.Затем он просматривает содержащийся в нем текст и выполняет поиск дефиса.Если он находит его, то все, что находится ПЕРЕД дефисом, используется в качестве текста внутри тега.Принимая во внимание, что все, что стоит ПОСЛЕ дефиса, используется в событии onlick, которое открывает новое окно для этого URL.
Вот как это выглядит:
// 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-код -
бросается в –
тире (отображается на странице как –
).Этот символ не будет соответствовать тире в формате ASCII в регулярном выражении.
(Скажите “нет” ошибочной автоматической "умной" типографике, дети!Тире - это даже неправильный знак, поскольку обычно он обозначает числовые диапазоны, такие как 1-10.Здесь больше подошла бы буква "эм-тире"—".)
Есть ли какая-нибудь веская причина, по которой цитаты не должны быть реальными ссылками?Это также упростило бы обработку данных.например.
<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;
});
});
Тем не менее, это все равно покажет ссылку в тексте, а не удалит ее (и она выполнит синтаксический анализ после того, как вы нажмете на тег, не раньше), но, по крайней мере, это должно сработать.