So che questa domanda è stata posta numerose volte, sia qui che nel sito Yii, ma non ottengo la soluzione anche dopo aver esaminato ciascuna soluzione. Sono sicuro che sto facendo qualcosa di fondamentalmente sbagliato. Quindi, se stai ancora leggendo questo - qui non va nulla,Yii - jQuery non funziona dopo renderPartial
Ho una pagina che ha un widget CheckBoxList caricato. Ha una chiamata alla funzione jQuery change() che aggiorna un CGridView che funziona perfettamente. Ho anche una span relativa a ciascuno degli elementi nella checkBoxList che hanno un evento click.
Questo evento click, a sua volta chiama un controllore, che "rende parzialmente" una visione -
Yii::app()->clientscript->scriptMap['jquery.js'] = false;
$this->widget('ext.xxx.EModelWidget', array(
'name' => $widget_name,
'manufacturer_id' => $manufacturer_id,
)
);
E il codice del widget corrispondente stampa un CheckBoxList dopo il recupero $ dati dal db.
echo CHtml::checkBoxList($this->name, array(), $data, array(
'class' => 'modelFilter',
'separator' => '',
'template' => '<div>{input} {label}</div>',
'id' => 'dummyID',
));
Come potete vedere, ho messo il nome della classe per ogni elemento che verrà visualizzato come una casella di controllo per essere modelFilter
Ora ho uno script nel file vista principale per visualizzare solo una finestra di avviso quando si fa clic sul checkbox di class modelFilter.
Yii::app()->clientScript->registerScript('model-selected', "
$('input.modelFilter').change(function(){
alert('Hellpo!');
});
");
Ma sfortunatamente, questo non succede mai.
Le due soluzioni comuni che ho letto in tutti i forum è
a) Yii :: app() -> clientscript-> ScriptMap [ 'jquery.js'] = false; che puoi vedere che ho debitamente seguito.
b) I parametri $ result e $ processOutput di renderPartial devono essere falsi e veri rispettivamente., che è anche qualcosa che ho seguito.
Quindi la mia domanda è cosa devo fare per ottenere la funzione di modifica su un contenuto che viene caricato tramite Ajax funzionante, in Yii !!
Per quanto ho capito ... l'evento click genera anche una richiesta AJAX? In questo caso, potresti verificare se nella risposta c'è un jQuery JavaScript incluso? Se è così, questo potrebbe reinizializzare il tuo jQuery e rovinare la tua logica JavaScript, anche se dovresti essere in grado di disabilitarlo impostando processOutput su 'false'. – schmunk