【问题标题】:jQuery Accordion Menu and Checkbox IssuejQuery Accordion 菜单和复选框问题
【发布时间】:2013-09-18 22:06:39
【问题描述】:

所以我有一个简单的 jQuery 手风琴风格菜单,在菜单的标题部分带有复选框。这是根据该类别在地图上切换一组图钉。

这里是html:

<div id="mapMenu">
<ul id="accordion">
<li><div>
        <input type="checkbox" id="greenCheck" name="pinSet" value="Green"  class="pinToggles" onclick="pinSetCheck(greenSet)">Attractions
    </div>
    <ul>
        <li><a href="#">Outdoor Waterparks</a></li>
        <li><a href="#">Indoor Waterparks</a></li>
        <li><a href="#">Go-kart Track</a></li>
    </ul>
</li>
<li><div>
        <input type="checkbox" id="redCheck" name="pinSet" value="Red" class="pinToggles" onclick="pinSetCheck(redSet)">Dining & Shopping
    </div>
    <ul>
        <li><a href="#">Restaurant 1</a></li>
        <li><a href="#">Restaurant 2</a></li>
        <li><a href="#">Restaurant 3</a></li>
    </ul>
</li>
<li><div>
        <input type="checkbox" id="purpleCheck" name="pinSet" value="Purple"  class="pinToggles" onclick="pinSetCheck(purpleSet)">Groups & Meetings
    </div>
    <ul>
        <li><a href="#">Conference Room 1</a></li>
        <li><a href="#">Conference Room 2</a></li>
        <li><a href="#">Conference Room 3</a></li>
    </ul>
</li>
<li><div>
        <input type="checkbox" id="orangeCheck" name="pinSet" value="Orange"  class="pinToggles" onclick="pinSetCheck(orangeSet)">Golf
    </div>
    <ul>
        <li><a href="#">Golf Course 1</a></li>
        <li><a href="#">Golf Course 2</a></li>
        <li><a href="#">Golf Course 3</a></li>
    </ul>
</li>
<li><div>
        <input type="checkbox" id="darkBlueCheck" name="pinSet" value="Dark Blue"  class="pinToggles" onclick="pinSetCheck(darkBlueSet)">Spa</div>
    <ul>
        <li><a href="#">Spa 1</a></li>
        <li><a href="#">Spa 2</a></li>
        <li><a href="#">Spa 2</a></li>
    </ul>
</li>
</ul>
</div>

还有脚本:

$("#accordion li div").click(function(){
    $(this).next().slideToggle(300);
});

$('#accordion ul:eq(0)').show();

这里是小提琴:http://jsfiddle.net/eBaKp/

如果您选中该框,则会激活该类别的手风琴。我不想要这个。我希望它保持不变,除非他们点击该 div 的其余部分。

【问题讨论】:

    标签: javascript jquery jquery-ui-accordion


    【解决方案1】:

    我添加了这个:

    $(".pinToggles").click(function(event){
        event.stopPropagation();
    });
    

    小提琴:http://jsfiddle.net/eBaKp/1/


    Event.stopPropagation() 防止点击事件(或其他事件,例如mouseover)冒泡到父母,导致他们的事件触发。

    【讨论】:

    • 效果很好。谢谢!学习 jQuery 并看到它可以做的所有事情真是太疯狂了。
    • Javascript 也可以。
    • @KarolHernik 对,jQuery 不是必需的,这可以在 vanilla JS 中轻松完成。选择器使我们的代码更易于维护。
    猜你喜欢
    • 2013-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-13
    • 2013-11-18
    • 1970-01-01
    相关资源
    最近更新 更多