Tôi biết câu hỏi này đã được hỏi nhiều lần, cả ở đây và trong trang Yii, nhưng tôi không nhận được giải pháp ngay cả sau khi trải qua từng giải pháp. Tôi chắc chắn rằng tôi đang làm một cái gì đó về cơ bản sai. Vì vậy, nếu bạn vẫn đọc sách này - ở đây không có gì,Yii - jQuery không hoạt động sau khi renderPartial
Tôi có một trang có tiện ích CheckBoxList đang được tải. Nó có một thay đổi() jQuery gọi hàm làm mới một CGridView hoạt động hoàn hảo tốt. Tôi cũng có một khoảng liên quan đến mỗi mục trong checkBoxList có một sự kiện nhấp chuột.
sự kiện nhấp chuột này, đến lượt nó gọi một bộ điều khiển mà "một phần làm cho" một cái nhìn -
Yii::app()->clientscript->scriptMap['jquery.js'] = false;
$this->widget('ext.xxx.EModelWidget', array(
'name' => $widget_name,
'manufacturer_id' => $manufacturer_id,
)
);
Và mã phụ tùng tương ứng in một CheckBoxList sau khi lấy $ dữ liệu từ db.
echo CHtml::checkBoxList($this->name, array(), $data, array(
'class' => 'modelFilter',
'separator' => '',
'template' => '<div>{input} {label}</div>',
'id' => 'dummyID',
));
Như bạn thấy đấy, tôi đã đặt tên lớp cho mỗi phần tử đó sẽ được trả lại như một hộp kiểm để được modelFilter
Bây giờ tôi có một kịch bản trong các tập tin giao diện chính để chỉ hiển thị một hộp cảnh báo khi hộp kiểm của lớp modelFilter được nhấp vào.
Yii::app()->clientScript->registerScript('model-selected', "
$('input.modelFilter').change(function(){
alert('Hellpo!');
});
");
Nhưng thật không may, điều này không bao giờ xảy ra.
Hai giải pháp chung mà tôi đã đọc trong tất cả các diễn đàn là
a) Yii :: app() -> clientscript-> scriptMap [ 'jquery.js'] = false; mà bạn có thể thấy rằng tôi đã theo dõi hợp lệ.
b) $ result và $ processOutput tham số của renderPartial là sai và đúng tương ứng., cũng là thứ mà tôi đã theo dõi.
Vì vậy, câu hỏi của tôi là những gì tôi nên làm gì để chỉ nhận được chức năng thay đổi trên một nội dung được tải thông qua Ajax làm việc, trong Yii !!
Theo như tôi hiểu ... sự kiện nhấp cũng kích hoạt yêu cầu AJAX? Nếu đây là trường hợp bạn có thể kiểm tra xem có JavaScript jQuery bao gồm trong phản hồi không? Nếu vậy, điều này có thể reinitialize jQuery của bạn và mess lên logic JavaScript của bạn, mặc dù bạn sẽ có thể vô hiệu hóa điều này bằng cách thiết lập processOutput để 'false'. – schmunk