【问题标题】:Toggle div on click with mulitple div's在点击多个 div 时切换 div
【发布时间】:2017-03-03 09:19:23
【问题描述】:

我想显示/隐藏多个同名的 div

<div class="slide"><button>Click Here</button></div>
<div class="slideChild"></div>
<div class="slideChild"></div>
<div class="slideChild"></div>
<div class="slideChild"></div>


<div class="some content">ABC</div>

<div class="slide"><button>Click Here</button></div>
<div class="slideChild"></div>
<div class="slideChild"></div>
<div class="slideChild"></div>
<div class="slideChild"></div>

以上是示例文本,我无法更改类结构或附加任何类,因此对此问题有任何想法。

我知道我们可以在按钮事件触发时使用 jquery 切换,但它会向上滑动所有 div,所以我必须使用其他最接近的东西。

  $("body").on("click","button",function(){
         $('.slideChild').toggle();
  });    

【问题讨论】:

  • 你能解释一下你遇到的问题吗?您可以使用发布的 jquery 代码将它们全部隐藏,但您是说它不像您期望的那样工作?为什么
  • 当我按下按钮时,它只会在该 div 附近向上滑动 4 个 slideChild div。

标签: jquery ajax html jquery-ui


【解决方案1】:

你可以使用Jquery的toggle():

$( ".slideChild" ).toggle();

【讨论】:

  • 它将切换两个 div 我只想要最接近的 div 而不是在 ABC 文本之后
  • 最近的 div 是什么意思?最接近什么?
  • 只有四个离那个 div 最近的 Slidechild div。
  • 然后更改顶部或底部的名称。还是不能改?
  • 我无法更改它。它来自插件。
【解决方案2】:

使用 Jquery

$('.slideone button').click(function(){
    $(".slideChild").toggle();
});

【讨论】:

    【解决方案3】:

    希望这会有所帮助。

    这是一个成功的小提琴:https://jsfiddle.net/pqmg1Loq/

    如果您单击ABC 之后的按钮,它们将消失。我使用了~选择器,意思是“在这个之后的所有兄弟选择器”,类似于“+”,但选择了所有的选择器。

    ABC 之前的按钮的问题在于,相同的方法将隐藏所有元素,因为它们都在跟随它。

    一种解决方案是,当单击第一个按钮时,创建一个包含所有.slideChild 元素的数组,然后循环遍历它并隐藏元素直到找到.some.content 元素。

    希望对您有所帮助。

    【讨论】:

    • 但是父类是一样的不像slide和slideOne它只是slide。
    • 它们在你原来的例子中不一样,你编辑了它:p
    • 是的,我看到了代码,发现有一个问题,所以我根据我必须在我的项目中创建的功能更改了代码。
    【解决方案4】:

    有一种方法是什么,你必须把所有的slidechild类放到slideone class div中,它靠近slideone class div。

         <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.js"></script>
     <div class="slideOne"><button>Click Here</button>
    <div class="slideChild">A</div>
    <div class="slideChild">B</div>
    <div class="slideChild">C</div>
    <div class="slideChild">D</div>
    
    </div>
    
    
    <div class="some content">ABC</div>
    
    <div class="slide"><button>Click Here</button>
    <div class="slideChild" id="a">E</div>
    <div class="slideChild">F</div>
    <div class="slideChild">G</div>
    <div class="slideChild">H</div>
    </div>
    
    <script>
     $(document).on("click","button",function(){
         var parendDIv=$(this).parent('div').attr('class');
         $("."+parendDIv+">.slideChild").toggle();
    
    
      });  
    </script>
    

    【讨论】:

    • 无法更改类名或与其他开发领域冲突。
    • 对不起,你没有得到我。我没有说要更改类名。您只是看到我的评论的 slideone 类 div 的结尾在哪里以及查看 js 代码。我希望你明白我的意思。 :)