2011-01-07 4 views
2

Tumblrのlogin pageは多くの人にインスピレーションを与え、趣味の開発者として、私はどのようにログインフォームを作ったのか見たいと思っていました。私は他のページにjQueryの1.3を使用するようjQueryのUncaught TypeErrorはコードの競合に起因しますか?

<div id="login_form_container"> 
    <form method="post" action="logged-in.html" id="login_form"> 
     <div class="input_wrapper"> 
      <label for="login_email">Email address</label> 
      <input type="text" name="email" id="login_email" value=""> 
     </div> 
     <button type="submit"><span>Log In</span></button> 
    </form> 
</div> 

を見て、私は彼らの素敵な効果を得るために、以下のものを使用してみました:私はそうのように、余計なコードを離れて取り、簡易版を思い付きました。 、これはページ上のコードのみであるとき

<script> 
$("input#login_email").click(function() { 
    $(".input_wrapper").addClass("blurred filled"); 
}); 

$("input#login_email").blur(function() { 
    $(".input_wrapper").removeClass("blurred"); 
}); 
</script> 

これは素晴らしく、ダンディに動作しますが、私はjQueryの他のビットとページにそれを置くとき:それは彼らがそれを持って、非常にどのようにではないのですが、非常に単純化されたバージョンそれは、それは明らかに私のコードのChrome、FirefoxやSafariのか同じだ

Uncaught TypeError: Cannot call method 'click' of null 
    (anonymous function) 

:それはのエラーを返します。

問題は何ですか?

  • ページ内の他の箇所で競合するjQuery参照が原因である可能性はありますか?
  • もっと明白ですか?
  • 私は関数に名前を付けなかったのでそれはありますか?

私はなぜコードが孤立して動作するのか疑問に思っていますが、ページ内の他の要素と組み合わされていると混乱しません。これは私に困ってしまった。

+0

のようなスクリプトを変更も*あなたのページの*プロトタイプですか? –

+0

あなたは正しいです。問題を分離するために私自身の狩猟をしました(最初の答えに対する私のコメントを参照してください)。実際にScriptaculous.jsとPrototype.jsの両方から生じる矛盾があります。どうすればこの問題を解決できますか? –

答えて

5

この

<script src="jquery.js"></script> 
<script type='text/javascript'> 

jQuery.noConflict(); 
jQuery("input#login_email").click(function() { 
    jQuery(".input_wrapper").addClass("blurred filled"); 
}); 

jQuery("input#login_email").blur(function() { 
    jQuery(".input_wrapper").removeClass("blurred"); 
}); 
</script> 
+1

'var $ j = jQuery.noConflict();'これは '$ j'変数を通常の' $ 'の代わりに新しいjQuery関数として割り当てます。 '$ j( 'input#login_email')' – Dan

+1

他のフレームワークの前にjQueryフレームワークをインポートする必要があることにも注意してください。他のフレームワークをインポートする前に 'jQuery.noConflict()'関数を呼び出してください。 – Dan

+0

&@dan 上記のことは、私のログインフォームが機能するという意味では機能しますが、他のすべての機能が停止しているように見えます。私はまた、アップスロー次のエラーを取得: 'キャッチされない例外TypeError:オブジェクトのプロパティ「$」[オブジェクトDOMWindow]はprototype.jsの&controls.jsの両方で発生しfunction' (Scriptaculousのの一部) ではありません私のコードに大きな問題があるかもしれないと聞こえますが、この問題はそれを強調していますか? Hm。あなたの応答に感謝します –

関連する問題