JQuery Accordion:单击标题时打开链接而不是滑下手风琴

时间:2011-04-18 17:51:03

标签: javascript jquery html accordion jquery-ui-accordion

更新

$('#menu1').bind('accordionchangestart', function(e, ui)
{
    console.log( 'accordionchangestart event triggered' );
    e.preventDefault();
});

我尝试了上面的代码,我确实得到了控制台消息,但手风琴仍然向下滑动。有没有办法阻止手风琴在活动中滑落?

我已尝试return falsee.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>

除非标题链接不是#,否则我希望手风琴正常工作。例如,Item 2的href是item2.html。在这种情况下,我希望它作为普通链接运行,并打开页面。

3 个答案:

答案 0 :(得分:1)

这就是你能做的:

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>

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();
        }
    });
});

jsfiddle

答案 1 :(得分:0)

更改您的点击事件以包含以下内容:

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

答案 2 :(得分:0)

您能告诉我们您使用的插件吗?还是自制?

如果是插件,你可以去参加活动并说: 如果href与#不同,则转到链接。

例如

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

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