1

私はこのデータ構造を持っており、ul 内のすべてのリスト項目の内容を変更したいと考えています。

<ul class="comments-holder">
  <li class="single-comment-holder">
    <div class="comment-body">
      <div class="comment-text">
        Some Text
      </div>
    </div>
  </li>
  <li class="single-comment-holder">
    <div class="comment-body">
      <div class="comment-text">
        Some Text
      </div>
    </div>
  </li>
</ul>

jQuery に each() コマンドがあることは知っていますが、自分のコンテキストでそれを使用する方法がわかりません。テキストが長すぎる場合はテキストを短くし、テキストを拡張するために [もっと見る] ボタンを追加するスクリプトを使用しています。私が持っている例は次のようになります:

<div class="comment">
  This is a long comment text. 
  This is a long comment text. 
  This is a long comment text. 
  This is a long comment text.
</div>
<script type="text/javascript">
  $(document).ready(function() {
    $(".comment").shorten();
  });
</script>

私の質問は、それぞれがどのように正確に機能するかです。次のように使用することを考えまし $(".ul.comments-holder .li.single-comment-holder .comment-body .comment-text").each(shorten(););たが、まったく機能しません。私が見つけたそれぞれの使用法はすべてフォームに...each(function(){})あったので、必要なように使用することさえ可能ですか?

4

4 に答える 4

1

.セレクターの余分なものを削除して、次のように再試行してください。

$("ul.comments-holder li.single-comment-holder .comment-body .comment-text").each(function () {
    $(this).shorten();
});

または、次のような短いバージョン

$(".comment-text").each(function () {
    $(this).shorten();
});

またはちょうどのように

$(".comment-text").shorten();
于 2013-09-06T13:22:01.637 に答える
0

ここで何かが欠けているかもしれませんが、関数が jQuery オブジェクトのメソッドであることはまったく明らかではありません。

テキストが長すぎる場合にテキストを短くするスクリプトを使用しています

スクリプトが $.fn を拡張する場合、上記のパラシンによる回答は素晴らしいものです。単なる関数の場合は、次のように渡します。

$(function(){
  $("div.comment-text").each(shorten);
});
于 2013-09-06T13:32:02.720 に答える
0

どうですか

$("li div.comment-text").each(function() {$(this).shorten()})
于 2013-09-06T13:21:26.083 に答える