如何使用jquery动态添加折叠类到同一个类的多个div中?

问题描述 投票:0回答:2

我有一个页面有多个相同类的divs,我想为所有的divs动态添加collapse类。

我的HTML :

<div class="section-title"></div>
<div class="section-text"></div>

<div class="section-title"></div>
<div class="section-text"></div> 

<div class="section-title"></div>
<div class="section-text"></div> 

我的jquery 。

var numItems = $('.section-title').length;

var i;
for(i='0';i<numItems;i++) {
    $(".section-title ").attr("data-toggle", "collapse");
    $(".section-title ").attr("data-target", "#collapseOne"+i);
    $(".section-text ").attr("data-toggle", "collapse");
    $(".section-text").attr("id", "collapseOne"+i);
}

但这并不奏效,因为我想为divs添加collpaseOne1,collpaseOne2,collpaseOne3类,但它为所有divs添加collpaseOne3。

jquery twitter-bootstrap-3
2个回答
0
投票

像这样

$(function(){


  const $sections = $('.section-title')
  
  for (let i = 0; i< $sections.length; i++){
  
    const $section = $sections.eq(i)
    const $sectionText = $section.next()
    
    $section.text(`Section ${i}`)
    $sectionText.text(`Section Text ${i}`)
    
    const targetId = `section_${i}`
    $sectionText.attr('id',targetId)
    $sectionText.addClass('collapse')
   
    $section.attr('data-toggle','collapse')
    $section.attr('data-target',`#${targetId}`)

  }

})
.section-title{
  font-weight:bold;
  cursor:pointer;
  padding:.5em;
}

.section-text{
   padding:.5em;
   margin-bottom:1em;
}
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>


<div class="section-title"></div>
<div class="section-text"></div>

<div class="section-title"></div>
<div class="section-text"></div> 

<div class="section-title"></div>
<div class="section-text"></div> 

0
投票

那是因为你每次都要针对所有的一个人,需要分别执行动作。

$(".section-title").each(function(i, element){
  $(this).attr({
    "data-toggle": "collapse",
    "data-target": "#collapseOne"+i
  })
});

$(".section-text").each(function(i, element){
  $(this).attr({
    "data-toggle": "collapse",
    "id": "collapseOne"+i
  })
});
© www.soinside.com 2019 - 2024. All rights reserved.