如何在动态元素上使用preventDefault?

Sha*_*aun 3 forms jquery dynamic preventdefault

我有一堆动态创建并添加到div的表单.每个表单的id也是动态创建的 - ids总是不同的,但它们都以......开头.

updateFRM_
Run Code Online (Sandbox Code Playgroud)

我不能让preventDefault()方法的工作 - 我不知道如果是这样的问题,或者语法不正确以致js的失败和重新加载.

为动态生成和动态命名的表单设置侦听器的正确语法是什么?

$( "#updater" ).on( "submit", "form[id^='updateFRM_']", function(e)
{ 
    e.preventDefault();
Run Code Online (Sandbox Code Playgroud)

谢谢你的时间和帮助

Pet*_*ter 6

使用$(document)选择器,您可以定位动态生成的元素.这是因为该文档涵盖了dom,而不仅仅是最初加载的html.以下是您可以做的两个例子.这完全取决于您的代码以及您将使用这两种选择中的哪一种.

基于ID

var formid = 'someformid';
$(document).on('submit', '#' + formid, function(e) {
    e.preventDefault();
    // Do your form stuff
    return false;
});
Run Code Online (Sandbox Code Playgroud)

基于类

$(document).on('submit', '.my-form', function(e) {
    e.preventDefault();
    var formid = $(this).attr('id');
    // Do stuff with the formid 
    return false;
});
Run Code Online (Sandbox Code Playgroud)

更新

这return false;不是必需的.我添加它以防万一e.preventDefault()失败.一些jQuery版本有不同的方法来阻止默认操作.使用a return false;做同样的事情.它执行上面的代码然后,而不是执行默认操作返回false.