質問

わかりましたので、ここにスキニーがあります...

最初にページを見て< 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;
 });
});

ただし、テキスト内のリンクは表示されたままで、削除されません(タグをクリックすると解析が行われます)。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top