私はこの質問が、こことYiiサイトの両方で数多く尋ねられていることを知っていますが、それぞれの解決策を経ても解決策が得られません。私は根本的に何かをやっていると確信しています。あなたがまだこれを読んでいるなら、ここには何も行きません。Yii - jQueryがレンダリング後に機能しない
私は、CheckBoxListウィジェットがロードされているページを持っています。これは、完全にうまく動作するCGridViewをリフレッシュするchange()jQuery関数呼び出しを持っています。また、clickイベントを持つcheckBoxListの各アイテムに関連するスパンがあります。
このクリックイベントは、順番にビューを「部分的にレンダリングする」コントローラを呼び出します -
Yii::app()->clientscript->scriptMap['jquery.js'] = false;
$this->widget('ext.xxx.EModelWidget', array(
'name' => $widget_name,
'manufacturer_id' => $manufacturer_id,
)
);
と、対応するウィジェットコードをDBから$データをフェッチした後、CheckBoxListのを印刷します。あなたが見ることができるように
echo CHtml::checkBoxList($this->name, array(), $data, array(
'class' => 'modelFilter',
'separator' => '',
'template' => '<div>{input} {label}</div>',
'id' => 'dummyID',
));
、私はモデルフィルタ今
私はちょうど表示するには、メインビューファイル内のスクリプトを持っていることをチェックボックスとして表示される各要素のクラス名を入れていますクラスmodelFilterのcheckBoxがクリックされたときの警告ボックス。
Yii::app()->clientScript->registerScript('model-selected', "
$('input.modelFilter').change(function(){
alert('Hellpo!');
});
");
残念ながら、これは起こりません。
私はすべてのフォーラムで読んだことがある2つの一般的な解決策が
であるA)のYii ::アプリ() - > clientscript->スクリプトマップ[ 'jquery.jsは'] = falseの。あなたは私が正式に従ったことを見ることができます。
b)$ resultおよび$ processOutputパラメータは、それぞれ、falseおよびtrueにする必要があります。、これも私が従ったものです。
私の質問は、YiiでAjaxを使って読み込まれたコンテンツに変更機能を追加するだけです。
私が理解する限り、clickイベントはAJAXリクエストを発生させますか?この場合、応答にjQuery JavaScriptが含まれているかどうかを確認できますか?もしそうなら、これはあなたのjQueryを再初期化し、あなたのJavaScriptロジックを混乱させるかもしれませんが、processOutputを 'false'に設定することでこれを無効にできます。 – schmunk