jQuery help - 在当前表格单元格和相邻单元格中查找范围

时间:2009-08-20 22:10:06

标签: asp.net javascript jquery

我的表单上有一个HTML表格。第1列包含下拉列表和隐藏的跨度,第2列包含隐藏的跨度。我需要显示两个跨度并在用户进行选择后隐藏下拉列表。我在其他应用程序中使用类似的代码做了类似的事情

var ddl_change = function() {
  var ddl = this;
  $("lbl1").text(ddl.options[ddl.selectedIndex].text).show();
  $(ddl).hide();
}

如果有4个下拉列表(表中的行)。对于代码重用,我想使用相同的处理程序。我想我可以写4个单独的处理程序,但这似乎是浪费。

一行的html看起来像这样

<tr>
  <td>
      <asp:DropDownList runat="server" ID="ddlbc1" />
      <asp:Label runat="server" ID="lbl1" />
  </td>
  <td>
       <asp:Label runat="server" ID="bd1" />
  </td>
</tr>

如果需要,我有完整的客户端控件ID。无论如何,在这个单一函数中有没有办法处理任何行?我将客户端更改事件处理程序添加到所有必需的下拉菜单中,并将它们指向此单个函数。我确认他们都正确接线了。我希望lbl1 textx是ddl selectedValue,而bd1在相邻的单元格中有ddl selectedText。任何jQuery大师的帮助将不胜感激。谢谢你们!

干杯, 〜在圣地亚哥

2 个答案:

答案 0 :(得分:1)

$("td select").change(function(e){    
   $(this).hide().parent().parent().find("span").show();
});

给它一个旋转。您也可以通过直接修改CSS或更改类来管理它。

您可以使用$(“#table-id-name select”)而不是$(“td select”)(将选择整个页面中的所有TD)一次定位整个表而不是一行。

答案 1 :(得分:1)

如果您提供了有助于识别它们的列表/跨度类,但可以通过其他方式完成。

$('table select').change( function() {
      var $this = $(this);
      $this.hide();
      var lbl = $this.next('span');
      var bd = $this.closest('td').next('td').find('span');
      lbl.text( $this.val() ).show();
      bd.text( $this.find('option:selected').text() ).show();
});