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

时间:2015-01-06 01:38:23

标签: javascript jquery ajax forms function

目前我使用:

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

要处理网站上的所有表单,因为95%的表单是在ajax中处理的。这节省了我不得不将它应用于一个类,然后必须将该类添加到每个表单。

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

我选择这种方法,因为大多数表格使用ajax提交,所以请不要建议定位课程,除非你确定没有其他选择。

3 个答案:

答案 0 :(得分:1)

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

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

你也可以把课程放在:

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

答案 1 :(得分:0)

$(':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>

答案 2 :(得分:0)

如果它是您不想处理的元素的一个特定类,您可以使用.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
    });
});