如何在下拉列表中应用列表过滤器(重复,请求进一步信息)

时间:2011-07-20 14:16:29

标签: jquery

我问了"How to apply list filters on a dropdown lists"问题并得到了答案。但该解决方案无法在Internet Explorer中运行。请有人调试此代码。
这是链接

http://jsfiddle.net/ymSbu/

2 个答案:

答案 0 :(得分:0)

这应该为你排序

$(function () {


        $('#a').live('change', function () {
            selectedElement = $(this).find("option:selected");
            if (selectedElement) {
                $('#b').empty().append("<option value='0'>Select answer</option>" + selectedElement.get(0).outerHTML).val(0);
            }
        });

    });

HTML:

    <table>
  <tr>
  <td>
  <select class="dropdown" id="a">
  <option value="">Select answer</option>
  <option value="1" >Yes</option>
  <option value="2">No</option>
  <option value="3">N.A.</option>
  </select>
  </td>
  <td>
  <select class="dropdown" id="b">
    <option value='0'>Select answer</option>
  </select>
  </td>
  </tr>
  </table>

答案 1 :(得分:0)

这可能会严重简化您要执行的操作,它假设两个选择列表中的选项始终相同,并且您希望将第二个下拉列表的选项设置为选择值。第一个(除非选择“请选择”,然后它应该是所有选项)。假设是这种情况,那么:

$('#a').live('change',function()
{
  var firstSelect = $(this),
      otherSelect = $('#b'),
      selectedItem = $(this).children(':selected'),
      itemsToClone = selectedItem.val() ? selectedItem : firstSelect.children(':gt(0)');

  otherSelect
    .children(':gt(0)')
      .remove()
    .end()
    .append(itemsToClone.clone());
});

它增加了DOM操作的开销,但是在所有浏览器中工作的优势。

jsbin中的示例:http://jsbin.com/anihec/3