Создание тега <cite>, интерактивного с помощью jQuery - PullRequest
0 голосов
/ 28 ноября 2009

Хорошо, так вот тощий ...

Я разработал функцию jQuery, которая сначала просматривает страницу и ищет теги . Затем он просматривает содержащийся в нем текст и ищет дефис. Если он находит, то все, прежде чем дефис используется как текст внутри тега. Принимая во внимание, что все ПОСЛЕ дефиса используется в событии 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 ... Итак, я удалил это и просто загрузил ту же версию, которую я загружаю на статической странице, но все еще не играли в кости.

Есть идеи?

Ответы [ 2 ]

3 голосов
/ 28 ноября 2009

WordPress автоматически превращает ваши ASCII - штрихи в en-тире (на странице обозначается &#8211;). Этот символ не будет соответствовать ASCII-тире в регулярном выражении.

(Скажите «нет» введенной в заблуждение автоматической «умной» типографии, дети! En-dash - даже не правильная отметка, так как обычно она обозначает числовые диапазоны, такие как 1–10. Здесь лучше подойдет знак em - «-». )

Есть ли веская причина, по которой ссылки не должны быть реальными ссылками? Это также облегчит обработку. например.

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

$('cite a').click(function(e) {
    var pop= window.open(this.href);
    return pop && !pop.closed;
});
0 голосов
/ 28 ноября 2009

Возможно, ваш скрипт загружен до содержимого. Если вы попробуете что-то вроде этого:

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

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

...