jQuery中live()和bind()之间的区别

时间:2011-11-27 19:55:10

标签: jquery

我有一个表单和一个按钮,它不是表单中的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()之间的区别,但仍不知道它们在此示例中的工作原理。我的代码就像我现在想要的那样工作,但我想知道这里发生了什么。有人可以向我解释一下吗?

1 个答案:

答案 0 :(得分:0)

实时适用于使用该选择器添加到DOM的任何元素,而bind只适用于DOM中已有的元素。假设你有一个元素<div id="test">Test</div>。如果在调用bind方法时该元素存在,那么bind将按预期工作。如果该元素不存在则不起作用。

这与使用选择器的任何元素的live相反,无论它何时被添加到DOM。