2011-06-29 9 views
0

私は愚かな間違いをしているだけではないと思っていますが、何らかの理由で次のコードが動作しません。jquery .clickが機能しない

var Photobooth = (function(){ 
var api = {}; 

var init = function(){ 
    form_ready(); 

}; 


var form_ready = function(){ 
    console.log("ready"); 
    $('#btn-signin').click(function(e){ 


     e.preventDefault(); 
     console.log('click'); 

     $.ajax({ 
       type: 'POST', 
       url: "entertainment/photobooth/signin/action/", 
       data:$(this).serialize(), 
       success: function(){ 
       $(this).addClass("done"); 
       } 
      }); 

    }); 
}; 



init(); 
return api; 
})(); 

HTML::

<a id="btn-signin" href="##">SIGN IN </a> 

解決起こる唯一の事は

Javascriptを.click以内に何もない、それはコンソールで、 "準備完了" ログに記録しますが、通常、I私のJSコードを文書の終わりに、閉じた本文の前に置いてください...この場合、私は最初にそれを入れてdocument.readyを置くのを忘れてしまったので、今すぐ動作します。あなたは、私はjQueryのレディ機能であなたのコードを巻いていることがわかります私の例では

var Photobooth = $(function(){... 
    .... 
    init(); 
    return api; 
}); 
+1

ちょうどChromeで試してみましたが、うまく動作しているようです(コンソールに「クリック」しています):http://jsfiddle.net/SzwRe/ –

+0

あなたには不要なコードがたくさんあります。あなたの問題の軽減。 api変数が返されますが、空のオブジェクトです。 –

+0

それは私のために働く。ドキュメントが準備される前にJavaScriptが実行されていますか? – smoak

答えて

4

あなたがdocument.readyラッパーを必要とします。

+0

うわー...なぜそれが見逃されたのか分かりません...私はdocument.readyラッパーを置いたことがなく、いつも働いています。たぶん、それは実際にはページの最上部にあるので...うん、それは今意味がある。ありがとう! – Bill

0

私にとってはうまくいきます。デモを試すhere

jQueryを使用する前にロードされていないと仮定します。

常に私が<a>が作成される前に、あなたのコードを呼び出していると確信している

$(document).ready(function(){ 

}); 
0

内のjQueryを使用しています。 jQueryのreadyを使用するか、コードをページの下部に移動してください。

関連する問題