2012-02-23 11 views
1

このjQueryのセレクタは新しいモデルのためのRails 3 HTMLフォームと一致する介して返さマッチした要素に関数を実行:$( 'フォーム[ID^= "new_master_ hostはする"]')jQueryの:Ajaxの

私がしたいのですが一致するフォームが読み込まれるたびに簡単なフォーカス機能が実行されます。フォームは単純なGETを介して読み込まれるだけでなく、Ajax経由で読み込まれることもあります。後者の場合、返されるコンテンツはHTMLまたはエスケープされたJSのいずれかになります。

私はjQueryがセレクタ、.on()、および "load"イベントを介してすべてのケースに一致することを期待していましたが、どのケースでもその動作を行うことはできません。コード:

$(document).ready(function() { 
    $('form[id^="new_"]').on("load", function(){ 
     console.log("Matched!") 
    }); 
}) 


ありがとうございました。私はあなたのコードを動作させることができなかったのではないかと心配しています。私は表示されているように、それ以外の新しいカスタムイベントで以下のコールバックを使用していますが、$( 'form')がイベントをトリガーしているとは思いません。

$('.shows-children').bind('ajax:success', function(evnt, data, status, xhr){ 
    var boxSelector = '#' + $(this).data("shows"); 
    $(boxSelector).html(xhr.responseText); 
    $('form').trigger('customevent'); 
}); 

$(document).on('customevent','form[id^="new_"]', function(){ 
    console.log('Matched!') 
}); 

(私はそれがHTMLはAjaxのレスポンスで返さにjQueryの行為を持っていることが予想よりもより複雑なようで驚いている。)

答えて

0
$(document).on("change","form[id^=\"new_\"]" function(){ 
     console.log("Matched!") 
    }); 

が委任について、あなたは元のセレクターを委任したいです親が、イベントが泡立つようになる。

しかし、負荷が泡立つことはありません。この場合、変更で十分ですが、ドキュメントが変更されるたびにデリゲートが有効かどうかを確認して試行します。

これで、AJAXがフォームの読み込み後にカスタムイベントを作成することをお勧めします。

例:

$(document).on("customevent","form[id^="new_"]" function(){ 
    console.log("Matched!") 
    $.ajax(url, function(response){ 
     //success 
     $(document).append(response); 
     $('form').trigger('customevent'); 
    }); 
}); 

HTH

+0

おかげ正義は、私は、これはいくつかの作業コードのための右の取締役に私を指摘信じています。 –