2009-11-27 2 views
0

Итак, вот тощий ...Создание <cite> тегов кликабельным с JQuery

Я разработал функцию 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 ... Итак, я удалил это и просто загрузил ту же самую версию, которую загружаю на статической странице, но до сих пор нет кубиков.

Любые идеи?

+0

Возможно, использовать firebug или другую консоль js для запуска кода непосредственно на странице и посмотреть, работает ли он? (www.getfirebug.com) –

ответ

3

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

(Скажите «нет» ошибочной автоматической «умной» типографии, дети! En-dash - это даже не правая марка, поскольку она обычно обозначает числовые диапазоны, такие как 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; 
}); 
+0

Протестировал это на примере сайта с firebug, и bobince правильно. Это другой тире (-) нет - так измените его, и он должен работать. & # 8211 не работает, вам нужно ввести его преобразованным. –

+0

w00t! Я преобразовал JS-файл в UTF-8, чтобы соответствовать WP, а также изменил en-dash на em-dash и voila! Спасибо, человек! – Josh

+1

Цитаты - это не фактические ссылки, потому что я старался сделать так просто, чтобы кто-то мог сделать источник цитаты кликабельным элементом без ввода другого тега. Я знаю, что это похоже на перебор, но вы будете удивлены, сколько людей попросили такие вещи. – Josh

0

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

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

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

+0

Он загружен в готовую функцию, извините, я думаю, я тоже должен был сказать об этом ... Было бы лучше работать, если бы я загрузил его в нижнем колонтитуле вместо заголовка? Таким образом, содержимое страницы может быть загружено до того, как скрипт вступит в действие? – Josh

+0

Да, я это видел. Не видел пример до того, как я его написал –