2013-05-08 59 views
0

您好,感謝您閱讀我的問題。我有一個典型的列表視圖:如何在Yii列表視圖中實現動態js腳本?

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

在我_view文件我有一個div和slideToggles股利的按鈕。如果我只是把JavaScript的頁面的頂部,這是行不通的,因爲結果是動態的,與該ID的DIV變化返回的名稱,例如:

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?我嘗試將代碼添加到列表視圖屬性ajaxUpdate但它仍然無法正常工作。有人能告訴我如何在列表視圖中循環使用Javascript嗎?

回答

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中,但放到您渲染列表視圖的主文件中。你只需要這一個單一的片段來處理你所有的按鈕。

+0

嘿我試過你的解決方案,但在查看源代碼後生成的代碼看起來像這樣; $('#details-7')。click(function(e){('。detailsDiv')。slideToggle(); e.preventDefault(); }); 這使得點擊最後一個按鈕關閉我需要的所有div每個按鈕關閉相應的div – Gunnit 2013-05-09 07:42:25

+0

你一定已經忘記了一些東西。這與我上面寫的完全不同。仔細看:我使用'$('。toggleDetails')。click(..)'。另外請確保您將該Js放入您創建列表視圖的視圖文件中。 – 2013-05-09 07:45:10

+0

哦,對不起,我再次更新了我的初始答案。所以,也許你應該再次嘗試以上:) – 2013-05-09 07:55:15

相關問題