我有一个表单和一个按钮,它不是表单中的submit
。
我在提交之前使用jQuery来验证表单。
我先是:
$('#btadd').live('click', function() {
$('#formadd').submit();
//return; //it doesn't matter
});
$('#formadd').submit(function() {
if (...) {
alert('incompleted!');
return false;
} else if (...) {
alert('invalid!');
return false;
} else
return true;
});
问题是如果表单没有完成,当我点击按钮时,弹出窗口('未完成!')将发生两次。
然后我尝试将live
替换为bind
,然后就可以了。
我搜索了live()
和bind()
之间的区别,但仍不知道它们在此示例中的工作原理。我的代码就像我现在想要的那样工作,但我想知道这里发生了什么。有人可以向我解释一下吗?
答案 0 :(得分:0)
实时适用于使用该选择器添加到DOM的任何元素,而bind只适用于DOM中已有的元素。假设你有一个元素<div id="test">Test</div>
。如果在调用bind方法时该元素存在,那么bind将按预期工作。如果该元素不存在则不起作用。
这与使用选择器的任何元素的live相反,无论它何时被添加到DOM。