javascript - 如何在没有冲突的情况下为多个 div 容器归档相同的 jquery 操作

标签 javascript jquery css

我有多个 Div 容器,每个容器都有一个列表。

列表项的前五个结果应该是可见的,下一个列表项应该在滚动中可见。

当用户点击“显示更多”时,滚动条将被禁用,所有列表项将在没有滚动条的情况下可见。

如果列表项的结果不少于四个,则显示更多链接将被隐藏。

我们存档的内容与一个容器列表项相同,但我想对所有 div 容器列表项使用相同的脚本。

DEMO

HTML:

<h1>First part</h1>

<div class="row">

  <div class="col-md-12">
    <a href="#demo" data-toggle="collapse"><span class="glyphicon ecm-caret-down">Arrow</span></a>
    <span class="fb_options_head">Heading 1</span>

    <!--Hiding Div Start-->
    <div id="demo" class="collapse in">

      <ul class="nav_accordian">
        <li>One
          <ul>
            <li>on 1.1</li>
            <li>on 1.2</li>
            <li>on 1.3</li>
          </ul>
        </li>

        <li>2</li>
        <li>3</li>
        <li>4</li>
        <li>5</li>
        <li>6</li>
        <li>7</li>
        <li>8</li>
        <li>9</li>
        <li>10</li>
      </ul>
      <p class="showMore">Show More</p>
    </div>
    <!--Hiding Div End-->

  </div>
</div>
<h1>Second part</h1>
<div class="row">

  <div class="col-md-12">
    <a href="#demo1" data-toggle="collapse"><span class="glyphicon ecm-caret-down">Arrow</span></a>
    <span class="fb_options_head">Heading 2</span>

    <!--Hiding Div Start-->
    <div id="demo1" class="collapse in">

      <ul class="nav_accordian">
        <li>One
          <ul>
            <li>on 1.1</li>
            <li>on 1.2</li>
            <li>on 1.3</li>
          </ul>
        </li>

        <li>2</li>
        <li>3</li>
        <li>4</li>
        <li>5</li>
        <li>6</li>
        <li>7</li>
        <li>8</li>
        <li>9</li>
        <li>10</li>
      </ul>
      <p class="showMore">Show More</p>
    </div>
    <!--Hiding Div End-->

  </div>
</div>

JS:

$('.nav_accordian').each(function() {
  var max = 4
  if ($(this).find('> li').length > max) {

    $(".showMore").show();
  } else {
    $(".showMore").hide();
  }
  $('.showMore').click(function() {
  alert("call");
    $('.nav_accordian').toggleClass("fullAuto");
    $(".showMore").text(function(_, txt) {
      return txt == "Show More" ? "Less More" : "Show More";
    })
  });

});

CSS:

.nav_accordian {
  max-height: 160px;
  overflow-y: auto;
  width: 400px;
}

.fullAuto {
  max-height: 100%;
}

最佳答案

所做的更改

► 将 click 函数移出循环

► 在 click 函数中使用 $(this) 而不是 $(".showMore")

$('.nav_accordian').each(function() {
  var max = 4
  if ($(this).find('> li').length > max) {
    $(".showMore").show();
  } else {
    $(".showMore").hide();
  }
});
$('.showMore').click(function() {
  alert("call");
  $(this).prev().toggleClass("fullAuto");
  $(this).text(function(_, txt) {
    return txt == "Show More" ? "Less More" : "Show More";
  })
});

Demo Fiddle

关于javascript - 如何在没有冲突的情况下为多个 div 容器归档相同的 jquery 操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36279806/

相关文章:

javascript - 从数据表选定行中获取最低和最高日期值

css - 是否可以使用 css3 变量作为 SASS mixin 的参数?

jQuery 图像 Cycle2 在悬停时启动

javascript - 从字符串(包含字符串)创建数组的javascript数组

javascript - 如何在 fancybox 中获取当前图像索引?

javascript - 我如何添加图像的CSS过渡以在div悬停时上下滑动

javascript - 使用 angularjs 对特定两个字段进行 ng-repeat 搜索?

javascript - 如何在 Accordion 标题上提交表单?

html - 如何使用 form-inline bootstrap 3?

javascript - 如何在nodejs服务器上使用tensorflow js?