我在表格中有数据列表并提供了一个弹出窗口。就像当指针悬停在该图像上时,它将弹出该数据的正文。在我分离该视图之前,它正在工作。我正在使用 yii。
这是我的表代码:
<tbody>
<?php foreach ($page_data['data_list']as $data_from_controller_key => $data_from_controller){?>
<tr>
<td>
<a style="cursor:pointer;" . . . .><?php echo $data_from_controller['title'] ?></a>
</td>
<td>
<div rel="popover" data-trigger="hover"
data-placement="left" data-content="<?php echo $data_from_controller['content'] ?>" >
<a class="btn btn-small" data-toggle="modal"><i class="icon-search"></i></a>
</div>
</td>
</tr>
<?php } ?>
</tbody>
当这个视图仍然是我index.php
的一部分时,弹出窗口正在工作。然后我把它转移到另一个视图,接下来我知道,弹出框不起作用。
[更新]
所以我想问题不在这里。它在我的 JS 加载中。我的 JS 未在此视图中加载。就像发生在我datatables.js
身上的事情一样.我尝试通过在底部执行此操作来将JS放入此视图中以应用JS,因为从控制器初始化它不会有任何好处:
<script>
$('table#listdata').dataTable({
"sDom": "<'dt_header'<'row-fluid'<'span6'l><'clear'f>>r>t<'dt_footer'<'row-fluid'<'span6'i><'span6'p>>>",
"aoColumnDefs": [
{ "bSortable": false, "aTargets": [1] }
],
"bStateSave": true
}).columnFilter();
</script>
我的新问题是我的JS没有加载/初始化的原因是什么?
在很多方面,你可以加载js片段。
方式1:您可以将此片段写在主题主文件的底部。即在</body>
</html>
标签之前。
方式2:
您可以在主题主文件的底部包含自定义 js 文件,即检查以下代码:
- 如果你使用 Yii 默认主题:
<script src="<?php echo Yii::app()->request->baseUrl; ?>/assets/js/custom.js"></script>
- 如果您使用自定义主题:
<script src="<?php echo Yii::app()->theme->baseUrl; ?>/assets/js/custom.js"></script>
然后,将片段写入自定义.js文件的函数中,即
function tableSorter(){
$('table#listdata').dataTable({
"sDom": "<'dt_header'<'row-fluid'<'span6'l><'clear'f>>r>t<'dt_footer'<'row-fluid'<'span6'i><'span6'p>>>",
"aoColumnDefs": [
{ "bSortable": false, "aTargets": [1] }
],
"bStateSave": true
}).columnFilter();
}
现在为特定控制器或特定操作或特定视图调用该函数。在你的阶段,你应该为特定的视图调用函数,只需打开你需要的视图文件并在文件顶部编写以下代码:
Yii::app()->clientScript->registerScript('tablesorter', "
$(function() { tableSorter();});
");
我使用方式 2。请尝试。祝你好运
原因是因为您必须在文档准备就绪后声明脚本,这是您的错误
$(document).ready(function(){
$('table#listdata').dataTable({
"sDom": "<'dt_header'<'row-fluid'<'span6'l><'clear'f>>r>t<'dt_footer'<'row-fluid'<'span6'i><'span6'p>>>",
"aoColumnDefs": [
{ "bSortable": false, "aTargets": [1] }
],
"bStateSave": true
}).columnFilter();
});