2016-05-17 6 views
2

では見えないオブジェクトを追加しました。しかし、新しいオブジェクトが動的に追加されたとき、検証は彼にとってうまくいきません。アヤックスこんにちは私はこのようなのCoffeeScriptが持つDOM

これは#skill_listulである私の追加機能であり、そしてadd_skill部分がそれにliオブジェクトを追加します。

'<%= form_for [current_user, @character] do |f| %>' 
    $('#skill_list').append("<%= j render partial: 'add_skill', locals: { character: @character, skill: @skill, f: f } %> "); 
'<% end %>' 

私は新しいオブジェクトが作成された後DOMがリロードされていないことを前提としています。

答えて

2

これは範囲の問題のようです。新しいオブジェクトは動的に追加されるため、バインディングのスコープに注意する必要があります。

バインドアクションは、バインドしたもの(この場合は「変更」)を「リッスン」します。

しかし、あなた自身が要素を見つけようとしているので(つまり、$(element))、JSは "静的DOM"でその要素を見つけようとします(つまり、DOMの変更は気にしませんページが最初にロードされた後)。

スコープを使用すると、JSはこのスコープ内の変更を「リッスン」し、動的修正(つまり$(some_main_div).find(element))を「聞く」ことができます。

+0

add_skill_formはドロップダウン選択メニューで、新しい要素がskill_list ulにliとして追加されます。 – Kazik

+0

スコープを使用してスキルを取得しようとします。たとえば、if $(document).find( '#skill_' + skill_name) ' – dpedoneze

+0

それは働いた! :)あなたは答えでもっと説明をお願いしますか? – Kazik

関連する問題