2012-02-23 92 views
1

這jQuery選擇匹配一個Rails 3 HTML形式爲一個新的模型返回的匹配元素執行功能:$( '形式[ID^= 「new_」]')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!') 
}); 

(我很驚訝,似乎更多地參與比預期有jQuery的作用於HTML在Ajax響應返回。)

回答

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

感謝法官,我相信這指出了我在一些工作的代碼的權利總監。 – 2012-02-25 22:52:23