您好,感谢您阅读我的问题。我有一个典型的列表视图:
<?php $this->widget('bootstrap.widgets.TbListView',array(
'dataProvider'=>$dataProvider,
'itemView'=>'_view',
'emptyText'=>'No Jobs',
)); ?>
在我的_view文件中,我有一个div和一个slideToggles div的按钮。如果我只是将Javascript放在页面顶部,它就不起作用,因为结果是动态的,div的名称会随着返回的id而改变,例如:
id="detailsDiv-<?php echo $data->id_employer_contract;?>"
问题出在我的Javascript中,如下所示:
<?php Yii::app()->clientScript->registerScript('details', "$('#details-$data-id_employer_contract').click(function(){
$('#detailsDiv-$data->id_employer_contract').slideToggle();
return false;});");?>
如何让这个Javascript代码动态化?意思是,我如何循环id?我尝试将代码添加到listview属性ajaxUpdate
但它仍然无法正常工作。有人能告诉我如何在列表视图中循环Javascript吗?
答案 0 :(得分:2)
将id
添加到切换按钮作为数据属性:
<button class="toggleDetails" data-id="<?php echo $data->id_employer_contract ?>">
然后您可以访问这些数据属性,如js:
<?php Yii::app()->clientScript->registerScript('toggleDetails', "
$('.toggleDetails').click(function(e){
var id = $(this).data('id');
$('#detailsDiv-' + id).slideToggle();
e.preventDefault();
});
", CClientScript::POS_READY) ?>
注意:您不应将此javascript放入_view.php
,而应放入渲染列表视图的主文件中。您只需要这一个片段即可处理所有按钮。