0

次のドロップダウンは、生成された最初の画面で 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> 
4

1 に答える 1

1

$('#producttypes')ページがロードされた後に (たとえば AJAX 呼び出しから) 動的に追加される要素である場合、そこdelegate()から発生するイベントをキャッチするために使用する必要があります。

$("#parentElement").delegate('#producttypes','change',function(){
  ...
});

デリゲート関数は、動的要素の親に配置されます。親要素は直接の祖先である必要はありませんが、そうであってもかまいません$('body')が、パフォーマンス上の理由から、すべてのイベントを本体に添付することは避ける必要があります。

デリゲート() -

ルート要素の特定のセットに基づいて、現在または将来、セレクターに一致するすべての要素の 1 つ以上のイベントにハンドラーをアタッチします。

于 2013-01-09T17:20:41.380 に答える