如何根据父选择列表过滤子选择列表

时间:2011-06-16 17:17:57

标签: jquery jquery-ui jquery-selectors css-selectors

我有两个选择列表,使用jQuery UI Selectmenu script进行样式设置。该脚本隐藏了选择元素并写出了自己的UL,输入元素为LI。

我正在尝试编写一些条件,以便如果用户从选择列表1中选择一个元素,它会隐藏选择列表2中的一些元素。以下是从Firebug复制的脚本动态生成的HTML:

    <ul id="role-menu" aria-labelledby="role-button" role="listbox" aria-hidden="true" class="ui-selectmenu-menu ui-widget ui-widget-content ui-corner-bottom form-select ui-selectmenu-menu-dropdown">

  <li role="presentation" class="ui-selectmenu-item-selected current">
    <a aria-selected="true" role="option" tabindex="-1" href="#" id="ui-selectmenu-item-343" name="ui-selectmenu-item-343">Current</a>
  </li>

  <li role="presentation" class="past">
    <a aria-selected="false" role="option" tabindex="-1" href="#">Past</a>
  </li>

这是我正在努力工作的jQuery代码段。我不确定使用什么来保持脚本监听菜单中的更改,因为.change()似乎只用于表单元素。现在我正在尝试让脚本输出一个警告进行测试,但它不起作用。

$('#role-menu ul').change(function () {

    if($('li',this).hasClass('ui-selectmenu-item-selected current')) {
       alert('test');
    }
  });

我有更好的方法来做这件事吗?提前谢谢!

2 个答案:

答案 0 :(得分:0)

通过查看您的代码,我会问几个问题 您的UL角色菜单如何变化?你有什么行动?你在列表中点击了LI吗?在这种情况下,您可以关联LI的click事件。换句话说,你究竟想要实现什么?我敢肯定,如果你解释一下你的情况会更好,你就会得不到答案。

答案 1 :(得分:0)

好的,如果我理解你正确的话,你想在你选择更改的情况下使用具有特殊类的LI,你可以添加如下内容:

   var liCurrent =  $('li.current', $(this))

返回李选择的jquery对象