我有以下下拉列表,它在我生成的第一个屏幕上与我的jquery工作正常,但同一个屏幕可以生成多次,后续页面jQuery不能用于显示另一个框。
我现在很困惑。任何帮助非常感谢。
<xsl:for-each select="bankguarantees/bankguaranteedata">
<div id="panel22" class="panels">
<xsl:attribute name="id">panel22_<xsl:value-of select="@id"/></xsl:attribute>
<table border="1" width="100%" height="100%" bgcolor="#CECFFF" style="border-top: none" cellspacing="10">
<tr>
<td>
<table border="0" width="100%" height="100%" bgcolor="lightyellow" class="inline">
<tr>
<td colspan="3" class="Header" height="1"></td>
</tr>
<tr name="contliab" id="contliab">
<script type="text/javascript">
$('#producttypes').change(function()
{
if($('#otherprodtype').is(':selected'))
{
$('#otherprodtypebox').show();
}
else
{
if($('#otherprodtypebox').is(':visible'))
{
$('#otherprodtypebox').hide();
}
}
});;
</script>
<td class="Label">Product Type</td>
<td class="field">
<select name="producttypes" id="producttypes">
<option value="interventionguar">
<xsl:if test="producttypes/option[@id='interventionguar']='selected'">
<xsl:attribute name="selected"/>
</xsl:if>Intervention Guarantee</option>
<option value="customsguar">
<xsl:if test="producttypes/option[@id='customsguar']='selected'">
<xsl:attribute name="selected"/>
</xsl:if>Customs Guarantee</option>
<option value="otherprodtype" id="otherprodtype">
<xsl:if test="producttypes/option[@id='otherprodtype']='selected'">
<xsl:attribute name="selected"/>
</xsl:if>Other</option>
</select>
<input class="amdInputText" type="text" id="otherprodtypebox" value="" style="display:none;">
<xsl:attribute name="value"><xsl:value-of select="otherprodtypebox"></xsl:value-of></xsl:attribute></input>
</td>
</tr>
答案 0 :(得分:1)
如果$('#producttypes')
是在页面加载后动态添加的元素(例如,来自AJAX调用),那么您必须使用delegate()
来捕获即将发生的事件从它。
$("#parentElement").delegate('#producttypes','change',function(){
...
});
委托函数放在动态元素的父元素上。父元素不必是直接祖先,它也可以是$('body')
但是出于性能原因,您应该避免将所有事件附加到正文中。
根据一组特定的根元素,为现在或将来与选择器匹配的所有元素的一个或多个事件附加一个处理程序。