Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/469.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JQuery:on('Click')不响应新添加的前缀按钮_Javascript_Jquery_Ajax_Json_Django - Fatal编程技术网

Javascript JQuery:on('Click')不响应新添加的前缀按钮

Javascript JQuery:on('Click')不响应新添加的前缀按钮,javascript,jquery,ajax,json,django,Javascript,Jquery,Ajax,Json,Django,我有一个正在运行的Django应用程序,当用户提交新评论时,我使用JQuery将AJAX发送到服务器端。具体来说,当用户提交新注释时,它会触发以下JQuery函数: $(":input[type='submit']").on('click',function(event){ // send AJAX to Django views.py } 当JSON数据从views.py返回时,它会将包含新注释文本的HTML块前置到当前页面,而不会刷新页面。问题是这个新的HTML块还包含

我有一个正在运行的Django应用程序,当用户提交新评论时,我使用JQuery将AJAX发送到服务器端。具体来说,当用户提交新注释时,它会触发以下JQuery函数:

$(":input[type='submit']").on('click',function(event){
     // send AJAX to Django views.py
     }
当JSON数据从views.py返回时,它会将包含新注释文本的HTML块前置到当前页面,而不会刷新页面。问题是这个新的HTML块还包含输入[type='submit']元素。但是当我单击这些元素时,它们没有响应,并且views.py中的json.dumps无法检测到它们。显然,当单击按钮时,上面的JQuery函数不会触发

我检查了Chrome中的视图源代码。这些HTML确实出现在源代码中。它只是没有响应,HTTPResponse只返回一个JSON dict纯文本,这表明jQuery函数没有触发


如果有人能帮我一把,我将不胜感激。。谢谢大家!

.on事件仅为声明时存在的元素拾取

从jQuery文档中-

事件处理程序仅绑定到当前选定的元素;他们 在代码调用.on时,页上必须存在。 要确保元素存在并且可以选择,请执行事件 在文档就绪处理程序中为 页面上的HTML标记。如果新的HTML被注入到页面中, 选择元素并在创建新HTML后附加事件处理程序 放入页面中。或者,使用委派事件附加事件 处理程序,如下所述

委派事件的优点是,它们可以从中处理事件 以后添加到文档中的子元素。通过 选择一个元素,该元素保证在 已附加委派事件处理程序,您可以使用委派事件 避免频繁附加和删除事件处理程序

因此,要使用委派事件,您需要将on事件附加到父元素,例如,如果要将新注释附加到元素容器

$("#container").on('click','input[type=submit]',function(event){
   // send AJAX to Django views.py
});

示例-

如果没有看到HTML,就无法回答。工作起来很有魅力!非常感谢你!