2011-11-27 9 views
-1

フォーム内にsubmitではないフォームとボタンがあります。 jQueryを使用して、送信前にフォームを検証します。jQueryのlive()とbind()の違い

は、私が最初に持っている:

$('#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; 
}); 

問題は、フォームが完了していない場合、私はボタンをクリックすると、ポップアップが2倍を発生します(「未完了します!」)。

次に、livebindに置き換えようとしましたが、正常に動作します。

live()bind()の違いを検索しましたが、この例でどのように動作するかはまだ分かりません。私のコードは今私が望むものとして機能しますが、ここで何が起こるかを知りたいのです。誰かが私にこれを説明することはできますか?

+0

'if/else-if'の条件を記入してください。 – PhD

+2

それぞれのドキュメントページは読んでいますか? – BNL

+1

なぜ両方の機能が必要ですか? submit関数をbind関数の中に入れてみませんか? – bozdoz

答えて

0

ライブは、そのセレクタでDOMに追加されたすべての要素に対して動作します。これは、DOMに既に含まれている要素でのみ動作するバインドとは異なります。要素が<div id="test">Test</div>であるとします。バインドメソッドが呼び出された時点でその要素が存在する場合、バインドは期待通りに機能します。代わりに要素が存在しない場合、それは機能しません。

これは、DOMに追加されたときに関係なくセレクタを持つ任意の要素で動作するliveとは対照的です。

+0

私はこれを知っています。しかし、私の場合、彼らの行動はどう違うのですか? – DrXCheng

+0

HTMLはどこですか –