这个jQuery选择器匹配一个新模型的Rails 3 HTML表单:$('form [id ^ =“new _”]')
我想在每次加载匹配表单时运行一个简单的焦点功能。有时,表单通过简单的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!')
});
(我感到惊讶的是,似乎比预期更多参与了AjQuery响应中返回的jQuery行为。)
答案 0 :(得分: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