2011-12-04 16 views
0

デリゲート機能に問題があります。Delegate関数は新しい要素を解析できません。

$(function(){ 
     var current, toggleBoxes = $(".togglebox").hide(); 

     $("table").delegate(".fname", "focus", function() { 
      current = $(this).next(".togglebox"); 
      toggleBoxes.not(current).slideUp('fast'); 
      current.slideDown("fast"); 
     }); 
}); 

これは動作しますが、私は(追加)DOM構造に新しい要素を追加し、私は新たな付加フィールド入力をクリックした際に、div要素が示されているが、非表示にしたくないとき。

私を助けてください。あなたはjqueryの1.7または使用on()の上を使用して、あなたのtoggleboxesを非表示にしている場合は

おかげ@adeneo同様

+1

のjQueryを使用している場合1.7以上であれば、delegate()をon()に置き換えてみてください。おそらく、あなたのtoggleBoxes変数に新しい要素が含まれていない可能性があります。 – adeneo

+0

'.togglebox'を再選択する必要があります。要素を追加するとオブジェクトは更新されません。 –

+0

私はjquery 1.5を使用して、トグルボックスを再選択する方法 –

答えて

0

は、上記のコメントで述べています。あなたはそれらのすべてを隠すためにCSSを使用することができます。

http://jsfiddle.net/CfaM5/2/

そして、このことからデリゲート関数内の行を変更します。

toggleBoxes.not(current).slideUp('fast'); 

これに:

$(".togglebox").not(current).slideUp('fast'); 
+0

ありがとう、これは正常に動作します。 –

+0

@PiotrPo素晴らしい。コードをもう少し減らすことができるので、私はフィドルリンクを更新します。 –

+0

@PiotrPoあなたは新しいので、あなたの質問を解決する答えを受け入れてください。 –

関連する問題