index.ctp の「div」の内容を別のファイル changeto.ctp の内容に置き換えるために、Js ヘルパーを使用しています。
このアプリケーションには、対応する画像を含むいくつかのチェック ボックスがあります。チェックボックスを選択すると、設定がデータベースに保存され、対応する画像が表示されます。同様に、チェックを外すと、データベースから削除され、画像が消えます。
私はこれに Js ヘルパーを使用しています:
私のchangeto.ctpは私のindex.ctpのサブセットであり、同じ変数にアクセスでき、問題なくロードされます(ただし、クリック/変更イベントには応答しません。チェックボックスのIDの名前はまったく同じです)。
私のインデックス ファイルには、すべての Html の下部に次の Js コードが含まれています。
$this->Js->get($change_checkbox1 )->event('click',
$this->Js->request(array(
'controller'=>'testing',
'action'=>'changeto'
), array(
'update'=>'#changeDiv',
'async' => true,
'method' => 'post',
'dataExpression'=>true,
'data'=> $this->Js->serializeForm(array(
'isForm' => false,
'inline' => true
))
))
);
これは、次の Jquery/javascript を生成しています
$(document).ready(function () {$("#ck0_1_8").bind("click", function (event) {$.ajax({async:true, data:$("#ck0_1_8").closest("form").serialize(), dataType:"html", success:function (data, textStatus) {$("#changeDiv").html(data);}, type:"post", url:"\/mytest-site\/options\/testing"});
return false;});
}
私のコントローラーには、という関数があります
changeto()
{
$this->layout = 'ajax';
}
このチェックボックスを初めてクリックすると、これは問題なく機能します。ただし、その後のクリックは機能しません。JavaScriptは呼び出されていません。
私の質問は次のとおりです。
何か案は ?bind() の代わりに on() / live() を使用するように Cakephp に依頼すると役立ちますか?
ありがとう!!