いつもお世話になっております。htmlにおいて、<a>タグのネスト回避について教えてください。
現状説明
ブログトップページ
こちらのブログで、トップページの記事一覧のコンテンツとして、本文の一部を表示しています。
表示の仕方は、表示したい部分と隠したい部分にそれぞれクラス定義をしたdivを割り当て、jqueryのremove();を動作させています。
コンテンツの重なり方として、こんな形になっています。
html
1<div class="blog.content.desc"> A:トップページのうち、記事の内容を入れるエリア 2<!--(緑色で色付け。ブログ側で規定)--> 3 4 <div class="synopsis">B:トップページでのみ表示される概要</div> 5 <!--(水色で色付け)--> 6 7 <div class="entmain">C:個別記事ページでのみ表示される本文</div> 8 <!--(紫色で色付け)--> 9 </div> 10<!--BとCを合わせて<%topentry_body>(本文)という変数が振られており、それを挿入しています-->
ページによって、表示したい部分が変わってくるので、
jquery
1$(".entmain").remove();//トップページで動作。本文を隠す。// 2 3$(".synopsys").remove();//個別記事ページで動作。概要を隠す。//
この2つのjqueryをそれぞれ読み込んでいます。
困っていること
本文を隠す動作をするjquery
jquery
1$(".entmain").remove();
について、トップページの一部で正しく動作をしませんでした。
調べてみたところ、記事の本文中に下記のようなリンク要素
```html
<a href="xxxx">リンク</a>
が含まれていると、個別記事ページへつながるリンクの中に更にリンクがある(入れ子)状態になり、html的にエラーになっている、と分かりました。(Firefoxにてソース検証。個別記事ページでみると問題なし) [問題のページの例です。パソコンから見るとわかりませんが、スマホからだと4番目の記事においてトップページでのレイアウトが崩れています(サムネイルのズレなど)](https://ancyfamily.blog.fc2.com/) どうにかして、jqueryを動作させたく、試行錯誤をしています。 ネストを回避するにはどうしたら良いでしょうか。 **試してみたこと・疑問点** 【本文部分を<object>タグで囲む】 ```html <object> <div class="entmain">本文</div> </object>
記事内に直接記述する形で、<object>タグでネストしたところ、jqueryが正しく動作しました。
うまく動作したページ
これで正解だと思ったのですが…今度は個別記事ページの方で<object>要素の激しいチラつきが発生してしまいました…!しかも、この現象は、Chromeでのみ発生するようで、firefoxだと正常にページを見ることができています。(PC版・Android版共通)
【トップページ側に表示されている本文から、<a>要素を取り去ってみる】
<a>要素の内側に<span>を加え、
jquery
1$("span").unwrap();
を動作させようと試みましたが…そもそもがエラーのあるhtmlなので、ページに変化がありませんでした。
解決に向けて教えていただきたいこと
第1希望としては、<object>タグを使う方法でチラつきが抑えられる方法があっ
たらベストです。とてもお手軽なので…
トップページ側と個別記事側の本文は、変数により個別に挿入されており、リンクしているわけではないので、トップページ側のentmainのみ<object>で挟む…といったことができたらよいのですが…
トップページ側の本文から正規表現等で、<a>を削除する方法でも構いません。
removeされる要素なので、他の文字で置き換えてプレーンテキスト化などでも大丈夫かと思います。
長々と書いてしまい、すみません。
ぜひ、お力をお貸し願えればと思います。よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/03/08 10:26
2020/03/08 10:40