代码之家  ›  专栏  ›  技术社区  ›  leora Matt Lacey

如何使用jquery获得下一个相对下拉列表

  •  1
  • leora Matt Lacey  · 技术社区  · 14 年前

    我有这个密码

    <div id="aggregate" style="display:inline">
                        <%=Html.RadioButton("a", "1", true, new {id = "meRadio"})%><label>Me</label>
                        <%=Html.RadioButton("a", "2", false, new { id = "teamRadio" })%><label>Team: </label><% = Html.DropDownList("Teams", Model.Teams,  new {@scope="Team",  @id = "teamDropdown", @class = "filterDropdown" })%>
                        <%=Html.RadioButton("a", "4", false, new { id = "managerRadio" })%><label>Manager: </label><% = Html.DropDownList("Managers", Model.People, new { @scope = "Manager", @id = "managerDropdown", @class = "filterDropdown" })%>
                        <%=Html.RadioButton("a", "5", false, new { id = "locationRadio" })%><label>Location: </label><% = Html.DropDownList("Locations", Model.Locations, new { @scope = "Location", @id = "locationDropdown", @class = "filterDropdown" })%>
      </div>
    

    我现在有这样的代码:

     $('#workstreamRadio').click(function () {
         Enable("#workstreamDropdown");
     });
    
     $('#teamRadio').click(function () {
         Enable("#teamDropdown");
     });
    

    我确信有一种方法可以使用jquery动态地获得相应的下拉选择器,只要单击一个特定的单选按钮,这样我就不必硬编码每个映射。

    1 回复  |  直到 14 年前
        1
  •  2
  •   Nick Craver    14 年前

    你可以用 .nextAll() :first 这样地:

    $("#aggregate :radio").change(function() {
      var dropdown = $(this).nextAll("select:first");
      //enable or disable dropdown
    });
    

    既然他们是兄弟姐妹,就用 所有的兄弟姐妹都这样,你想要第一个 <select> 元素,因此在单击收音机后从同级中选择该元素。还要看使用 .change() 在这里而不是 .click() ,仅当选择更改时才会触发,这是 你想要什么。