如何将Javascript单击函数应用于没有类的元素

How to apply Javascript click function to elements without class?

本文关键字:元素 应用于 函数 Javascript 单击      更新时间:2023-09-26

目前我使用:

$(':submit').click(function(event) {
    event.preventDefault(); //Stop the browser from submitting the form.
    $.ajax( {
        //Handle forms in ajax
    });
});

处理网站上的所有表单,因为 95% 的表单都是在 ajax 中处理的。这使我不必将其应用于类,然后必须将该类添加到每个表单中。

我现在的问题是需要在没有 ajax 的情况下处理 2 个表单才能正常工作。那么,我将如何将相同的函数应用于除 2 之外的所有提交输入的特定类,而无需在函数中硬编码这些特定元素?这可能吗?有这种类型的否定选择器吗?

我选择了这种方法,因为大多数表单都使用 ajax 提交,所以除非您确定没有替代方案,否则请不要建议针对类。

您可以在选择器中使用:not()

$(':submit:not(.specialclass)').click(...)

您也可以将类放在以下形式中:

$('form:not(.specialclass)').submit(function(event) {
    ...
});

如果它是你不想处理的元素上的一个特定类,你可以使用 .not() 将它们从 jQuery 对象中删除:

$(':submit').not(".yourClass").click(function(event) {
    event.preventDefault(); //Stop the browser from submitting the form.
    $.ajax( {
        //Handle forms in ajax
    });
});

如果您希望避免使用具有任何类名的任何表单对象,则可以执行以下操作:

$(':submit').click(function(event) {
    if (this.className) {
         return;    // do nothing and let default action happen if there's a class name
    }
    event.preventDefault(); //Stop the browser from submitting the form.
    $.ajax( {
        //Handle forms in ajax
    });
});
$(':submit:not([data-standard-sumbit])')...

<form>
    <button type="submit" data-standard-submit>Submit</button>   
</form>

但是,通常最好绑定到表单submit事件,而不是提交按钮click事件。

因此:

$('form:not([data-standard-submit])').submit(...)
<form data-standard-submit></form>