Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.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 jqueryaccordion:单击标题时打开链接,而不是向下滑动Accordion_Javascript_Jquery_Html_Accordion_Jquery Ui Accordion - Fatal编程技术网

Javascript jqueryaccordion:单击标题时打开链接,而不是向下滑动Accordion

Javascript jqueryaccordion:单击标题时打开链接,而不是向下滑动Accordion,javascript,jquery,html,accordion,jquery-ui-accordion,Javascript,Jquery,Html,Accordion,Jquery Ui Accordion,更新: $('#menu1').bind('accordionchangestart', function(e, ui) { console.log( 'accordionchangestart event triggered' ); e.preventDefault(); }); 我试过上面的代码,我确实收到了控制台的信息,但手风琴还是滑了下来。有没有办法阻止手风琴在活动中滑落 我尝试了返回false和e.stopImmediatePropagation()。它们似乎都不能阻

更新:

$('#menu1').bind('accordionchangestart', function(e, ui)
{
    console.log( 'accordionchangestart event triggered' );
    e.preventDefault();
});
我试过上面的代码,我确实收到了控制台的信息,但手风琴还是滑了下来。有没有办法阻止手风琴在活动中滑落

我尝试了
返回false
e.stopImmediatePropagation()
。它们似乎都不能阻止手风琴向下滑动


以下是我的手风琴HTML:

<div id="menu1">
    <div>
        <h3><a href="#">Item 1</a></h3>
        <div>
            <a href="#">Item 1.1</a><br>
            <a href="#">Item 1.2</a><br>
            <a href="#">Item 1.3</a><br>
            <a href="#">Item 1.4</a><br>
        </div>
    </div>
    <div>
    <h3><a href="item2.html">Item 2</a></h3>
    <div></div>
    </div>
    <div>
    <h3><a href="#">Item 3</a></h3>
    <div>
        <a href="#">Item 3.1</a><br>
        <a href="#">Item 3.2</a><br>
        <a href="#">Item 3.3</a><br>
        <a href="#">Item 3.4</a><br>
    </div>
    </div>
</div>










我希望手风琴能够正常工作,除非标题链接不是
#
。例如,
item2
的href是
item2.html
。在这种情况下,我希望它能作为一个正常的链接,并打开页面。

更改您的单击事件,使其包含如下内容:

if ($(this).attr("href") != "#") {
  window.location = $(this).attr("href");
  return;
}

你能给我们看看你正在使用的插件吗?还是自制的

如果它是一个插件,你可以在活动中说: 如果href与#不同,则转到链接

比如说

$('h3').click(function(){
   if($(this).attr('href') != '#'){ return true; }
});

或者类似的。没有javascript脚本很难说。

这就是您可以做的:

HTML:

<div id="menu1">
    <div>
        <h3><a href="#">Item 1</a></h3>
        <div>
            <a href="#">Item 1.1</a><br>
            <a href="#">Item 1.2</a><br>
            <a href="#">Item 1.3</a><br>
            <a href="#">Item 1.4</a><br>
        </div>
    </div>
    <div>
    <h3><a href="item2.html">Item 2</a></h3>
    <div></div>
    </div>
    <div>
    <h3><a href="#">Item 3</a></h3>
    <div>
        <a href="#">Item 3.1</a><br>
        <a href="#">Item 3.2</a><br>
        <a href="#">Item 3.3</a><br>
        <a href="#">Item 3.4</a><br>
    </div>
    </div>
</div>

我知道在这个例子中这不重要,但最好的做法是使用
===
而不是
==
来避免ambiguity@Zach-没错。这是一个很好的编程实践,但我一直不好。我已经在使用JQuery Accordian来上下滑动它,但问题是单击事件中的preventDefault并不能阻止div向下滑动。我请求用我实现的代码编辑javascript代码。谢谢
$(document).ready(function(){
    $("#menu1 div div").hide();
    $("#menu1 div h3 a").click(function(e){
        if($(this).attr("href") == "#"){      
            e.preventDefault();
            $("#menu1 div div").slideUp();
            $(this).parent().next().slideDown();
        }
    });
});