我的表单上有一个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大师的帮助将不胜感激。谢谢你们!
干杯, 〜在圣地亚哥
答案 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();
});