【问题标题】:How to make specific li's under a button appear when button is clicked单击按钮时如何使按钮下的特定li出现
【发布时间】:2016-07-21 01:20:14
【问题描述】:

首先只想提一下我对编码很陌生,我知道我的代码不是最有效的,我只是在试验。现在回答问题!

我有一个与 NodeJS 代理通信的 EJS 文件,该代理向它发送 JSON 数据以进行操作(希望我说的是对的)。下面的代码对我来说工作正常,我遇到的唯一问题是,当我单击一个按钮时,它会取消隐藏所有 li,而不仅仅是我单击的按钮下的 li。分配类然后为每个生成的类编写 JavaScript 代码非常困难,因为我不知道一开始会有多少按钮。

我目前有:

Javascript (jQuery) 代码

  $(document).ready(function(){
   $('button').on('click', function(){
        $('li').toggleClass('hide');
    });
});

HTML/EJS 代码

<% for (i = 0; i < sortedStackName.length; i++) { %>
    <% if (sortedStackName[i] == sortedStackName[i + 1]) { %>
    <% } else { %>
    <button class="btn btn-primary space" id="<%= %>"><%= sortedStackName[i] %></button>
    <% data3.forEach(function (provider) { %>
    <% if (provider['stack_name'] == sortedStackName[i]) { %>
    <a href="#"><li class="hide"><%= provider['service_name'] %></li></a>
    <% }}); %>

我读过的一些没有用的帖子:

jQuery display nested ul on click of div in parent li

how to make text appear when a button is clicked

How to make a view appear through animation when a button is clicked?

Trying to make a div appear when a button is clicked

【问题讨论】:

    标签: javascript jquery html ejs


    【解决方案1】:

    由于&lt;a&gt; 标签的数量是可变的,我认为将它们放在&lt;div&gt; 中,然后为div 切换类是一种更清洁的解决方案,您也可以在那里使用Ashkan 的建议。所以你的 EJS 看起来像:

    <div class="hide">
    <% data3.forEach(function (provider) { %>
    <% if (provider['stack_name'] == sortedStackName[i]) { %>
    <a href="#"><li><%= provider['service_name'] %></li></a>
    <% }}); %>
    </div>
    

    在 JQuery 中:

    $(document).ready(function(){
       $('button').on('click', function(){
            $(this).next('div').toggleClass('hide');
        });
    });
    

    让我知道这是否有效。

    【讨论】:

    【解决方案2】:

    将 jQuery next() 函数与 a 选择器一起使用

     $(document).ready(function(){
       $('button').on('click', function(){
            $(this).next('a').toggleClass('hide');
        });
    });
    

    【讨论】:

      【解决方案3】:

      您可以将closest() 函数与li 选择器一起使用。

      $(document).ready(function(){
        $('button').on('click'),function(){
           $(this).closest('li').addClass('hide');
        });
      });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-02-05
        • 1970-01-01
        • 2016-09-05
        • 2020-03-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多