2012-01-09 19 views
1

私はcakephp 2.0を学び、Ajaxで作業しようとしています。私は正常にajaxで動作しているフォームを作成しました。今私はリンクで作業する必要があります。私がしたいのは、リンクをクリックしてdivを縮退することです。ケーキPHPのJSヘルパー

<?php $this->Js->get('#Edit-link')->event('click',$this->Js->get('#sending')->effect('fadeIn'));?> 

このコードは、作業と、あなたが投稿したすべてのコードが正しいように見えるJavaScriptの

$("#sending").bind("click", function (event) {$("#sending").fadeIn(); 
return false;}); 
$("#sending").bind("click", function (event) {$("#sending").fadeIn(); 
return false;}); 
$("#sending").bind("click", function (event) {$("#sending").fadeIn(); 
return false;}); 
$("#sending").bind("click", function (event) {$("#sending").fadeIn(); 
return false;}); 

答えて

1

の下に生成されていません。 JsHelperは、最初に関数内に$this->Js->get()への2回目の呼び出しのために、4回印刷されたという点を除いて、インクルードしたjQueryスクリプトを出力する必要があります。

正確には機能しないのは何ですか? jQueryライブラリが正しくロードされていますかas per the documentation

このスクリプトでは、IDが#sendingのリンクが存在することが必要です。また、リンクが正常に動作して(hrefのURLに続いて)、ページをリロードしてJavaScriptの効果や動作を正常に停止させることはありません。通常これを防ぐには、event.preventDefault()をjQuery関数の中に含めます(see the documentation here)。ビューの完全なコードを提供できますか?

また、このタイプのスクリプトをjQueryの構文で直接書くこともできます。この場合、Cakeの方法では、小さなプロジェクトでは不要な抽象化が増えます。

+0

実際には、このJS $( "#Edit-link")を生成したいと思っています。bind( "click"、function(event){$( "#sending")fadeIn(); return false;}) ;しかし、あなたが生成したJavaScriptが –

+0

より大きい場合は、 '$ this-> Js-> get( '#Edit-link') - > event()'の3番目のパラメータとして 'false'を追加してコードを実行すると、あなたが望むスクリプト。追加なしでは、行を印刷することさえできません。また、これを4回連続して実行することもありません。あなたはどこかにループで包まれていないと確信していますか? – mensch

+0

Js-> get( '#Edit-link') - >イベント( 'クリック'、$ this-> Js-> get( '#sending') - >効果( 'fadeIn')、false) ;?>私はforeachループにいたが、私はそこから削除した。しかし、JavaScriptを生成していない '偽'を置く。私は、Jsの直ぐ上に別のコールがあります。<?php echo $ this-> Js-> link( 'すべての投稿を表示'、 'http:// localhost/practice/cakephp/posts/ajaxcall'、配列( 'update' => '#content2'、 'htmlAttributes' =>配列( 'other' => 'value') ));?>そのうまく動作します。 –

関連する問題