Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Yii列表视图中实现动态js脚本?_Yii_Yii Extensions - Fatal编程技术网

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

如何在Yii列表视图中实现动态js脚本?,yii,yii-extensions,Yii,Yii Extensions,您好,谢谢您阅读我的问题。我有一个典型的列表视图: <?php $this->widget('bootstrap.widgets.TbListView',array( 'dataProvider'=>$dataProvider, 'itemView'=>'_view', 'emptyText'=>'No Jobs', )); ?> 在我的_视图文件中,我有一个div和一个滑动切换div的按钮。如

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

 <?php $this->widget('bootstrap.widgets.TbListView',array(
    'dataProvider'=>$dataProvider,
    'itemView'=>'_view',
        'emptyText'=>'No Jobs',             
)); ?>

在我的_视图文件中,我有一个div和一个滑动切换div的按钮。如果我只是将Javascript放在页面顶部,它将不起作用,因为结果是动态的,div的名称会随着返回的id而更改,例如:

id="detailsDiv-<?php echo $data->id_employer_contract;?>"
id=“detailsDiv”
问题出在我的Javascript中,如下所示:

<?php Yii::app()->clientScript->registerScript('details', "$('#details-$data-id_employer_contract').click(function(){
$('#detailsDiv-$data->id_employer_contract').slideToggle();
return false;});");?>

id
作为数据属性添加到切换按钮:

<button class="toggleDetails" data-id="<?php echo $data->id_employer_contract ?>">

嘿,我尝试了你的解决方案,但在查看源代码后生成的代码如下所示$(#details-7')。单击(函数(e){$('.detailsDiv').slideToggle();e.preventDefault();});这使得点击最后一个按钮关闭所有div我需要每个按钮关闭相应的div你一定忘了什么。这和我上面写的完全不同。仔细看:我使用
$('.toggleDetails')。单击(..)
。另外,请确保将该Js放入视图文件中,在该文件中创建列表视图。哦,对不起,我再次更新了初始答案。所以也许你应该再试试上面的:)非常感谢,今天早上你为我节省了很多时间。你的答案是正确的
<?php Yii::app()->clientScript->registerScript('toggleDetails', "
    $('.toggleDetails').click(function(e){
        var id = $(this).data('id');
        $('#detailsDiv-' + id).slideToggle();
        e.preventDefault();
    });
", CClientScript::POS_READY) ?>