目前我使用:
$(':submit').click(function(event) {
event.preventDefault(); //Stop the browser from submitting the form.
$.ajax( {
//Handle forms in ajax
});
});
要处理网站上的所有表单,因为95%的表单是在ajax中处理的。这节省了我不得不将它应用于一个类,然后必须将该类添加到每个表单。
我现在的问题是需要处理2个表单而不使用ajax才能正常工作。那么我如何将这个相同的函数应用于除了特定类的2之外的所有提交输入而不对函数中的那些特定元素进行硬编码?这甚至可能吗?是否有这种类型的否定选择器?
我选择这种方法,因为大多数表格使用ajax提交,所以请不要建议定位课程,除非你确定没有其他选择。
答案 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
});
});