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 包装器对象上调用,您的选择器也被搞砸了,因为您使用了类选择器而不是元素选择器,.ul而不是ul

$("ul.comments-holder li.single-comment-holder .comment-body .comment-text").shorten()
于 2013-09-06T13:16:58.520 回答
0

怎么样

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

我可能在这里遗漏了一些东西,但您的函数是否是 jQuery 对象的方法还不清楚。

我正在使用一个脚本,如果它们太长,它会为我缩短文本

如果您的脚本扩展了 $.fn,那么 palaѕн 的上述回答很棒。如果它只是一个函数,请以这种方式传递它:

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