如何在Yii列表视图中实现动态js脚本?

时间:2013-05-08 16:31:40

标签: yii yii-extensions

您好,感谢您阅读我的问题。我有一个典型的列表视图:

 <?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吗?

1 个答案:

答案 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,而应放入渲染列表视图的主文件中。您只需要这一个片段即可处理所有按钮。