Yiic Grid 视图总是提供直播不是一个功能
Posted
技术标签:
【中文标题】Yiic Grid 视图总是提供直播不是一个功能【英文标题】:Yiic Grid view always giving live is not a function 【发布时间】:2014-01-05 06:09:49 【问题描述】:我知道live
已被弃用。现在我正在使用 Yii 网格视图,我有以下代码:
$this->widget('zii.widgets.grid.CGridView', array(
'id' => 'category-grid',
'dataProvider' => $model->search(),
'filter' => $model,
'columns' => array(
'title',
array(
'class' => 'CButtonColumn',
'viewButtonUrl' => 'Yii::app()->createUrl("/shop/category/view",
array("id" => $data->category_id))',
'updateButtonUrl' => 'Yii::app()->createUrl("/shop/category/update",
array("id" => $data->category_id))',
'deleteButtonUrl' => 'Yii::app()->createUrl("/shop/category/delete",
array("id" => $data->category_id))',
),
),
));
在浏览器上它给了我错误:
typeError: jQuery(...).live is not a function
[Break On This Error]
jQuery('#category-grid a.delete').live('click',function()
我很困惑,因为我已经在整个文件夹中搜索 .live 功能,但我找不到它。请帮忙!
【问题讨论】:
你使用的是哪个版本的 Yii?我正在运行 1.1.14 并且删除按钮不使用 live() 方法,它使用 .on('click, '...') @JoeMiller 我认为可能是这种情况。当我搜索了应用程序但没有找到直播时,如何用 on 替换直播 【参考方案1】:我认为这是因为 Yii 的版本。它可能正在使用已弃用的.live()
。
一个可能的解决方案是你去yii/framework/zii/widgets/grid
并编辑CButtonColumn.php
在此将.live()
替换为.on()
我认为它应该可以工作。
【讨论】:
It Works..卡在里面很久了。非常感谢。【参考方案2】:jquery 的 live 功能已被贬低...如果您使用的 jquery 版本与 yii 内置的不同...显示 jquery 的 live() 方法文档 ...使用 .on() 或 .delegate()方法代替...我不确定...但是如果您使用的是其他 jquery 版本而不是...
从此页面Jquery live() documentation 从 jQuery 1.7 开始,不推荐使用 .live() 方法。使用 .on() 附加事件处理程序。旧版本 jQuery 的用户应该使用 .delegate() 而不是 .live()。
所以它不适用于 jquery 版本 >= 1.7
【讨论】:
【参考方案3】:您可以通过这样做重写默认的 javascript 操作
//I a'm commenting your delete url config
//'deleteButtonUrl' => 'Yii::app()->createUrl("/shop/category/delete",array("id" => $data->id))',
'buttons' => array(
'delete' => array(
'url'=>'Yii::app()->createUrl("/shop/category/delete",array("id" => $data->id))',
'click' => 'js:function(evt)'
. ''
. 'evt.preventDefault();'
. 'alert("Your functionality Will Come here. Or Call a function");'
. ''
),
)
【讨论】:
以上是关于Yiic Grid 视图总是提供直播不是一个功能的主要内容,如果未能解决你的问题,请参考以下文章