将“select”下拉列表转换为列表淹没后,div show/hide 停止工作

After converting "select" dropdown to list drowndown, div show/hide stopped working

提问人:Lori 提问时间:1/8/2016 更新时间:1/8/2016 访问量:172

问:

我想要的不是“选择”类型的下拉列表,而是 ul。但是,在转换为 ul 后,我的 javascript 没有触发,我不知道为什么。它非常适合作为选择...我错过了什么吗?

这是原始选择(工作)

<div class="container">
    <select id="selector1" name="divshowhide">
      <option selected disabled value="null">Sort By:</option>
      <option value="#Online-holder">Online Now</option>
      <option value="#Lowest-holder">Lowest Price First</option>
      <option value="#Best-holder">Best Rating First</option>
    </select>
</div>

这是ul版本:(不工作)

<li><a href="#">Sort</a>
    <ul class="dropdown" id="selector1">
        <li><a href="#" value="Online-holder">Online Now</a></li>
        <li><a href="#" value="Lowest-holder">Lowest Price First</a></li>
        <li><a href="#" value="Alpha-holder">Alpha</a></li>
    </ul>
</li>

下面是 javascript:

<script type="text/javascript"> 
$(document).ready(function() {

  $('#Online-holder').show();
  $('#Online-link').click(function() {
    $('#Online').toggle(400);
    return false;
  });


  $('#Lowest-holder').hide();
  $('#Lowest-link').click(function() {
    $('#Lowest').toggle(400);
    return false;
  });


  $('#Alpha-holder').hide();
  $('#Alpha-link').click(function() {
    $('#Alpha').toggle(400);
    return false;
  });

});

jQuery("#selector1").change(function(){
    var div = jQuery(this).val();
    $('.holder').hide(200);
    jQuery(div).show(200);
});
</script>

帮助!谢谢!

JavaScript jQuery HTML CSS

评论

1赞 adeneo 1/8/2016
UL 没有事件,它通常不会更改,除非您以编程方式更改它。你不能只是用 UL 替换选择并期望它以相同的方式工作,一个是接受用户操作的交互式元素,另一个只是一个静态无序列表。change
0赞 Lori 1/8/2016
嗯,这是有道理的:)难怪我要拔头发。我会找到另一种方法..谢谢 - 有没有其他方法可以在没有选择的情况下做到这一点?它属于我的顶部导航,到目前为止,如果不使用 ul,我无法格式化它以适应其余的菜单项。
0赞 adeneo 1/8/2016
您可以使用 UL 作为选择菜单,但这需要更多的工作,并且您必须以编程方式创建所有功能,这就是为什么有预制库可以做这种事情的原因。

答:

0赞 Batu.Khan 1/8/2016 #1

由于您的元素变成了可单击的元素而不是可选择的元素,因此您可以将函数更改为如下所示的函数:changeclick

jQuery("#selector1 li").click(function(){
  var div = jQuery("a", this).attr("value");
  $('.holder').hide(200);
  jQuery(div).show(200);
});

评论

0赞 Lori 1/8/2016
谢谢。。它正在尝试,但不是显示与链接相关的 div,而是隐藏了所有 div。