【问题标题】:JQuery .slideToggle()jQuery .slideToggle()
【发布时间】:2012-11-21 13:32:34
【问题描述】:

我在 JQuery 中使用 slideToggle() 来显示一个 div。 但这不起作用。

我做了不同的测试,但没有任何效果......

我有这个:

<div class="domaine">
<a>1. Compétences Scientifiques Transversales</a>
<br>
<div class="ssdomaine" style="display: none;">
    <a>1.1. Sciences et techniques</a>
    <br>
    <div class="competence" style="display: none;">
        <a href="#">1.1.1. Génie thermique et thermodynamique</a>
        <br>
    </div>
</div>

这里只是一个包含单个“ssdomaine”的“domaine”,其中包含一个“competence”

但是我在一个数据库中提出了一个请求,该请求可以向我发送多个包含多个“ssdomaine”的“domaine”,其中包含多个“ssdomaine”。

我想制作一个 .slideToggle() 而不指定任何 id。

我的 JQuery 代码是:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></script>
<script>
$(document).ready(function() {
   $('.ssdomaine').hide();
    $('.competence').hide();
   $('.domaine a').click(function() {
      $(this).next('.ssdomaine').slideToggle(1000);
      return false;
   });
   $('.ssdomaine a').click(function() {
          $(this).next('.competence').slideToggle(1000);
          return false;
    });
 });
</script>

我在这个链接中尝试了同样的方法: http://jsfiddle.net/6GRJr/168/

它正在工作,但它只出现在 domaine、ssdomaine 和权限的一次出现上。

有什么想法吗?

【问题讨论】:

    标签: jquery html slidetoggle


    【解决方案1】:

    这和height有关,看看这个小提琴http://jsfiddle.net/6GRJr/169/

    更新

    它不显示competence 的原因是因为它在您加载表单时被隐藏,而当您在ssdomaine 上执行slideToggle 时,它使ssdomaine 只可见而不是权限

    更新

    应该这样做http://jsfiddle.net/6GRJr/172/

    【讨论】:

    • 这很正常,我不希望权限也可见。对不起,如果我没有很好地解释,当我点击时,什么都没有出现。而且我希望ssdomaine出现,如果我点击ssdomaine,我希望出现权限。
    • 感谢它部分解决了我的问题。这是我想要的,但有一个例外。当我点击一个域时,我只希望 ssdomain 包含在域中出现。在这里,如果我有多个域并且我单击一个域,每个域都会出现 ssdomain。还有什么想法吗?
    • 嗯,这几乎是完美的。这对 ssdomaine 有好处,但是当我选择一个 ssdomaine 时,同一个域的每个 ssdomaine 都会显示它们的权限。例如:“domaine 1 domaine 2”我选择 domaine 1 :“domaine 1 ssdomaine1 ssdomaine2 domaine2”我选择 ssdomaine 2:“domaine 1 ssdomaine1 能力 1 能力 2 ssdomaine2 能力 2.1 能力 2.2 域 2” 在这个例子中,我不想拥有能力2.1 和能力2.2 出现。非常感谢!
    • (“Enters”未添加到此评论中,抱歉,您是否理解该示例?)
    【解决方案2】:

    jQuery 的 slideToggle() 充其量是错误的。幸运的是,HTML5 中有一个新功能可以在没有 JavaScript 的情况下提供此功能!

    查看新的 HTML5 标签:

    http://www.w3schools.com/tags/tag_details.asp

    【讨论】:

      【解决方案3】:

      .next 只查看直接兄弟,添加选择器只检查该元素是否与选择器匹配,.nextAll('.selector') 是要走的路,但会返回一个元素集合,所以你可能想要限制集合使用.first()

      $(document).ready(function() {
         $('.ssdomaine').hide();
          $('.competence').hide();
         $('.domaine a').click(function() {
            // next only looks at the immediate sibling, which in you code is a <br />
            //$(this).next('.ssdomaine').slideToggle(1000);
      
      
            // this would open all elements
            $(this).nextAll('.ssdomaine').slideToggle(1000); 
      

            // this would open this first instance of .ssdomaine
            $(this).nextAll('.ssdomaine').first().slideToggle(1000);
      
            return false;
         });
         $('.ssdomaine a').click(function() {
                $(this).next('.competence').slideToggle(1000);
                return false;
          });
       });
      

      【讨论】:

      • 非常感谢你们!我对这两个答案做了一些回答,结果变成了:jsfiddle.net/6GRJr/174 它正在做我想做的事。再次感谢您的时间。基鲁内
      猜你喜欢
      • 1970-01-01
      • 2022-01-15
      • 1970-01-01
      • 2023-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-01
      相关资源
      最近更新 更多