2012-02-23 90 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