Как сделать <cite> тег кликабельным с помощью jQuery

StackOverflow https://stackoverflow.com/questions/1810956

  •  06-07-2019
  •  | 
  •  

Вопрос

Итак, вот что самое интересное...

Я разработал функцию 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-код - бросается в тире (отображается на странице как &#8211;).Этот символ не будет соответствовать тире в формате 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;
 });
});

Тем не менее, это все равно покажет ссылку в тексте, а не удалит ее (и она выполнит синтаксический анализ после того, как вы нажмете на тег, не раньше), но, по крайней мере, это должно сработать.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top