jqueryを使用したクラス選択の問題
-
22-08-2019 - |
質問
私はしばらくの間、これを機能させるために壁に頭をぶつけてきました。コメントのプレビューをコンパクトにするために、コメント本文を 1 行に短縮しようとしています。jquery .each 関数を使用して、スレッドコメントシステム内の各 .cbody (コメント本文) を調べ、それを chead 内の cshort div に配置します。動作するはずですが、一番上の行で cshort クラスを選択できません。ご協力をよろしくお願いいたします。私が見る限り、私のjQueryは次のようになるはずです:
$('.cbody').each(function(Ind1){
var str = $(this).text();
$(this).parent().siblings('.chead').next('.cshort').html(str);
});
});
コメントの HTML は次のとおりです。
<ul>
<li>
<div id="23">
<a name="23">
</a>
<div class="chead">
<a href="#" class="unord">
<img src="images/plus.gif" border="0">
</a>
<a href="userinfo.php?user=muuuuuuuu">
<img src="include/avatar/n.jpg" border="0">
</a>
<span style="display: none;" class="uname">
usersname
</span>
,
<span class="cshort">
</span>
<span class="votes_up" id="votes_up23">
2
</span>
-
<span class="votes_down" id="votes_down23">
0
</span>
<span class="vote_buttons" id="vote_buttons23">
<a href="javascript:;" class="vote_up" id="23">
</a>
<a href="javascript:;" class="vote_down" id="23">
</a>
</span>
</div>
<div class="cbody">
<br>
The comment text funny lol
</div>
<a style="display: none;" href="#" class="reply" id="23">
Reply
</a>
<a style="display: none;" href="#21" class="cparent">
Parent
</a>
</div>
</li>
</ul>
解決
cbody の親には兄弟がないようなので、ビットは
$(this).parent().siblings('.chead')
は何も返しません。おそらくどちらかが必要です
$(this).parent().find('.chead')
または
$(this).siblings('.chead')
cshort に最も直接アクセスするには、次を使用します。
$(this).parent().find('.cshort')
編集:
HTML の階層は次のようになります。
ul
| li
| | div#23
| | | a
| | | div.chead
| | | div.cbody
| | | ...
$(this)
cbodyを指します$(this).parent()
div#23 を参照します$(this).parent().siblings()
の他のすべての子ノードを返します。li
(サンプルコードの場合は空です)$(this).siblings()
div.chead といくつかの部分を指しますa
要素
chead は cbody の兄弟であるため、これを選択する最良の方法は
$(this).siblings('.chead')
他のヒント
これを変更してみてください。
$(this).parent().siblings('.chead').next('.cshort').html(str);
これに:
$(this).siblings('.chead').children('.cshort').html(str);
あなたは.chead
の親を見てする必要はありませんので、 .cbody
と.cbody
は、兄弟です。また、.cshort
は.chead
の子供がいるので、あなたは(.chead
を経由して)いない兄弟で、.next
の子供たちに目を通すます。
最後のメソッドが追加されていないでしょうか?
.htmlを(文字列)それを毎回交換する、とあなたは最後のものだけになってしまいます。
所属していません StackOverflow