垂直手风琴jquery

时间:2012-10-27 02:14:01

标签: jquery

HTML(不应更改)

<div style="border:1px solid red;width:200px;">
<div class="wpsc_categorisation_group">
    <ul class="wpsc_categories wpsc_top_level_categories">
        <li><a href="link1">main link 1</a>
            <ul>
                <li><a>test 1</a></li>
                <li><a>test 2</a></li>
                <li><a>test 3</a></li>
            </ul>
        </li>
    </ul>
    <div class="clear_category_group"></div>
</div>
<div class="wpsc_categorisation_group">
    <ul class="wpsc_categories wpsc_top_level_categories">
        <li><a href="link2">main link 2</a>
            <ul>
                <li><a>test 1</a></li>
                <li><a>test 2</a></li>
                <li><a>test 3</a></li>
            </ul>
        </li>
    </ul>
    <div class="clear_category_group"></div>
</div>
</div>

CSS

div.wpsc_categorisation_group ul li {position:relative;}
div.wpsc_categorisation_group ul li ul {display:none;}

ul.wpsc_top_level_categories {padding-bottom:0 !important;}
ul.wpsc_top_level_categories li {}
ul.wpsc_top_level_categories li:hover {}
ul.wpsc_top_level_categories li ul li a span {background:none !important;}
span.collapse-arrow {cursor:pointer;background:red;width:10px;height:9px;float:right;margin-top:5px;} 

的jQuery

$('div.wpsc_categorisation_group ul li ul').slideUp().hide();
$('.wpsc_categories').on('click', 'a', function(e) {
    e.preventDefault();  // Prevent the Default Action
    if (e.target.className == 'collapse-arrow') { // Trigger only
                                                  // If clicked on span
        $(this).closest('ul').find('ul').slideToggle();
    }

});
$('div.wpsc_categorisation_group ul li a').append('<span class="collapse-arrow">&nbsp;</span>');

这是我的小提琴http://jsfiddle.net/nwbY7/23/

  1. 只有红色方块才能激活下拉幻灯片
  2. 链接应该重定向到网址(它不会去任何地方)
  3. html结构永远不应该改变
  4. 我非常需要任何帮助......: - (

2 个答案:

答案 0 :(得分:0)

您的点击事件处理程序阻止浏览器执行通常使用&lt; a&gt;标签:转到新网址。

所有链接点击都会触发

e.preventDefault()。如果您正在处理折叠箭头单击,则只需要这样做。这似乎对jsfiddle有用:

$('div.wpsc_categorisation_group ul li ul').slideUp().hide();
$('.wpsc_categories').on('click', 'a', function(e) {

if (e.target.className == 'collapse-arrow') { // Trigger only
                                              // If clicked on span
    $(this).closest('ul').find('ul').slideToggle();
    e.preventDefault();  // Prevent the Default Action
}

});
$('div.wpsc_categorisation_group ul li a').append('<span class="collapse-arrow">&nbsp;</span>');​

请注意,我所做的只是将e.preventDefault()移到if区块内。

答案 1 :(得分:0)

谢谢大家,我让它上班....唯一的问题是我希望加号在折叠时更改减号。

此处的工作示例http://jsfiddle.net/nwbY7/25/

HTML

 <div style="border:1px solid red;width:200px;">
<div class="wpsc_categorisation_group">
    <ul class="wpsc_categories wpsc_top_level_categories">
        <li><a href="link1">main link 1</a>
            <ul class="wpsc_second_level_categories">
                <li><a>test 1</a></li>
                <li><a>test 2</a></li>
                <li><a>test 3</a></li>
            </ul>
        </li>
    </ul>
    <div class="clear_category_group"></div>
</div>
<div class="wpsc_categorisation_group">
    <ul class="wpsc_categories wpsc_top_level_categories">
        <li><a href="link2">main link 2</a>
            <ul class="wpsc_second_level_categories">
                <li><a>test 1</a></li>
                <li><a>test 2</a></li>
                <li><a>test 3</a></li>
            </ul>
        </li>
    </ul>
    <div class="clear_category_group"></div>
</div>
</div> 

CSS

span.CatExpander {float:right;cursor:pointer;}
.wpsc_second_level_categories {display:none;}

的Javascript

//<![CDATA[
(function($)
{
$(document).ready(function()
{
$(".wpsc_top_level_categories > li:has(ul)").prepend("<span class=\"CatExpander\">[+]</span>");

$(".CatExpander").click(function()
{
$(this).toggleClass("CatExpanded").siblings("ul").slideToggle(500);
return false;
}).eq(0).addClass("CatExpanded").end().slice(1).siblings("ul").hide();
});
})(jQuery);
//]]>