Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 下拉菜单bug关闭和打开取决于单击区域_Javascript_Jquery_Html_Css - Fatal编程技术网

Javascript 下拉菜单bug关闭和打开取决于单击区域

Javascript 下拉菜单bug关闭和打开取决于单击区域,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我不知道为什么会这样。 我用html、css和jquery复制了一个手风琴,我遵循了这个指南,并将它改编成我的网站 “” 我的jquery是一样的,我的html和css有点不同,因为我定制了它,但基本上是一样的 HTML: 最后是我的jQuery /*Accordion*/ $(document).ready(function() { function close_accordion_section() { $('.accordion .accordion-section-title

我不知道为什么会这样。 我用html、css和jquery复制了一个手风琴,我遵循了这个指南,并将它改编成我的网站 “”

我的jquery是一样的,我的html和css有点不同,因为我定制了它,但基本上是一样的

HTML:

最后是我的jQuery

/*Accordion*/
$(document).ready(function() {
  function close_accordion_section() {
    $('.accordion .accordion-section-title').removeClass('active');
    $('.accordion .accordion-section-content').slideUp(300).removeClass('open');
  }

  $('.accordion-section-title').click(function(e) {
    // Grab current anchor value
    var currentAttrValue = $(this).attr('href');

    if ($(e.target).is('.active')) {
      close_accordion_section();
    } else {
      close_accordion_section();
      // Add active class to section title
      $(this).addClass('active');
      // Open up the hidden content panel
      $('.accordion ' + currentAttrValue).slideDown(300).addClass('open');
    }

    e.preventDefault();
  });
});
好吧,我的问题是。我想要的是: 当我单击标题1时,信息1下拉列表。(工程) 如果我点击标题2。显示信息1时,信息1关闭并打开信息2(工作)

现在我的问题是,如果信息2是打开的,我想关闭它,当我点击标题时,在标题的字母上,下拉菜单关闭并再次打开。。。如果我在字母外单击,它会正常工作

在jquery中

if($(e.target).is('.active')) {
我将
e.target
更改为
.accordion部分标题
,发生的是,当我单击字母或字母外部的任何位置时,它会打开和关闭,但是如果打开一个信息框,我单击另一个,另一个不会打开,但打开的一个会关闭

我不知道还能做些什么,如果你能帮忙的话,我很感激这不完全是一个答案(还不到50,所以我不能发表评论,对不起),但是有什么(好的)理由不使用吗?
如果你不想使用所有的jQueryUI(我可以理解),你可以在自定义下载部分“隔离”手风琴插件。
我可能比你想写的内容更简单。

不完全是一个答案(还不到50,所以我不能评论,对不起),但有没有(好的)理由不使用?
如果你不想使用所有的jQueryUI(我可以理解),你可以在自定义下载部分“隔离”手风琴插件。

我可能比你试图写的内容更简单。

可能你的e.target有时是错误的元素,事实上,它取决于你实际单击的位置

例如,如果您单击一个子元素(如案例中的
  • 元素),则条件
    $(e.target).is('.active')
    将失败

    请尝试使用以下代码:

     $('.accordion-section-title').click(function(e) {
        // Grab current anchor value
        var target = $(e.target).closest(".accordion-section-title");
        var currentAttrValue = $(target).attr('href');
    
        if($(target).is('.active')) {
    

    可能你的e.target有时是错误的元素,实际上它取决于你实际点击的位置

    例如,如果您单击一个子元素(如案例中的
  • 元素),则条件
    $(e.target).is('.active')
    将失败

    请尝试使用以下代码:

     $('.accordion-section-title').click(function(e) {
        // Grab current anchor value
        var target = $(e.target).closest(".accordion-section-title");
        var currentAttrValue = $(target).attr('href');
    
        if($(target).is('.active')) {
    

    嗯,我做这个的时候有点匆忙,我发现了,我试着用它,但我不知道怎么用。所以我认为复制它会更快,然后花时间学习如何使用它。嗯,当我这么做的时候,我有点匆忙,我发现了,我试着使用它,但我不知道怎么做。所以我认为复制它会更快,然后花时间学习如何使用它。哇,我真不敢相信这会奏效。太简单了!我从来没有想过,所以基本上,你所做的就是让e.target获得最终标题,这样它就永远不会得到错误的元素,对吗?@Kinder,是的,这是获得正确元素的最安全的方法哇,我不敢相信这会起作用。太简单了!我从来没有想过,所以基本上,你所做的就是让e.target获得结束标题,这样它就不会得到错误的元素,对吗?@Kinder,是的,这是获得正确元素的最安全的方法
     $('.accordion-section-title').click(function(e) {
        // Grab current anchor value
        var target = $(e.target).closest(".accordion-section-title");
        var currentAttrValue = $(target).attr('href');
    
        if($(target).is('.active')) {