0

関数は次のとおりです。

$('.entry-title').each(function() {
    var dotdotdot = $(this).html().indexOf('…'); 
    $(this).html('<a href="<?php the_permalink(); ?>"><span class="category">' + $(this).html().substring(0, dotdotdot) + '</span>' + $(this).html().substring(dotdotdot) + '</a>');
});

当初の意図は、スパンタグをタイトル自体のテキストに追加することでしたが、それは見事に機能しました (@ Making3 に感謝)。コード<a href="<?php the_permalink(); ?> + '</a>'は、後で元の関数に追加したものです。

私がやろうとしているのは、タイトルの周りにリンクをラップして、単一の投稿ページにリンクすることです。厄介な部分は、これらのタイトルがページの各投稿を逆方向にループし、すべての投稿に対して複数の空のリンクを作成していることです. 最後のリンクのみにタイトルが含まれていますが、そのタイトルの正しいリンクではありません。だから明らかに私がしたことは完全に間違っています。

ここに私のマークアップがあります:

<article <?php post_class(); ?>>
<script>
$('.entry-title').each(function() {
    var dotdotdot = $(this).html().indexOf('…'); 
    $(this).html('<a href="<?php the_permalink(); ?>"><span class="category">' +     $(this).html().substring(0, dotdotdot) + '</span>' + $(this).html().substring(dotdotdot) + '</a>');
});
</script>
  <header>
    <h2 class="entry-title"><?php the_title(); ?></h1>
  </header>
  <div class="entry-summary">
    <div class="entry">
      <?php the_content(); ?>
    </div>
  </div>
</article>

誰でも助けることができますか?

4

1 に答える 1

0

jQuery コードを次のように変更したように見えます。

<script>
$('.permalink').each(function() {
    var dotdotdot = $(this).html().indexOf('…'); 
    $(this).html('<span class="category">' + $(this).html().substring(0, dotdotdot) + '</span>' + $(this).html().substring(dotdotdot));
});
</script>

これはページ上では問題ないように見えますが、舞台裏では投稿ごとにそのjQueryコードを出力しています.each関数を実行するため、コードの各インスタンスのすべての投稿で動作するため、複数のネストされたスパンタグが生成されます.

現在、HTML は jQuery を介して次のようにレンダリングされています。

<h2 class="entry-title"><a href="/crushing-on/crushing-on-making-a-change/" class="permalink"><span class="category"><span class="category"><span class="category"><span class="category"><span class="category"><span class="category">Crushing on</span></span></span></span></span></span>…making a change</a></h2>

(クロムの要素を右クリックし、要素の検査をクリックして、これを自分で確認してください)

これは、jQuery コードの複数のインスタンスが原因で、1 つのインスタンスだけがすべてのリンクで動作するようにしたい場合に発生します。これを修正するには、投稿を生成している PHP ループの外側のページの上部にこの jQuery コード ブロックを配置して、一度だけ出力されるようにします。

于 2013-08-15T00:55:04.690 に答える