0

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 回答 2

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);
//]]>
于 2012-10-27T02:58:20.480 回答
0

您的 click 事件处理程序阻止浏览器执行通常使用 < a > 标签所做的事情:转到新 URL。

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块内。

于 2012-10-27T02:43:04.323 回答