< cite>の作成jQueryでクリック可能なタグ
質問
わかりましたので、ここにスキニーがあります...
最初にページを見て< cite>を検索するjQuery関数を作成しました。タグ。次に、その中に含まれるテキストを見て、ハイフンを検索します。見つかった場合、ハイフンの前のすべてがタグ内のテキストとして使用されます。一方、ハイフン以降はすべて、そのURLに新しいウィンドウを開く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を読み込んでいます。最初は、noconflictバージョンをロードするため、wp_enqueue_script( 'jquery')を使用してjQueryをロードしているためだと思ったので、...それでもサイコロはありません。
アイデアはありますか
解決
WordPressは自動的にASCIIの-
ダッシュを&#8211;
エンダッシュに変換します(ページでは&amp;#8211;
)。この文字は、正規表現のASCIIダッシュと一致しません。
(誤解された自動&#8220;スマート&#8221;タイポグラフィ、子供たちにノー! 8216;&#8212;&#8217;の方が適しています。)
引用が実際のリンクであってはならない正当な理由はありますか?また、処理が容易になります。例:
<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;
});
});
ただし、テキスト内のリンクは表示されたままで、削除されません(タグをクリックすると解析が行われます)。