我知道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函数的整个文件夹,但我找不到它。请帮忙!
答案 0 :(得分:2)
我认为这是因为Yii的版本。它可能正在使用已弃用的.live()
。
一种可能的解决方案是,您可以转到yii/framework/zii/widgets/grid
并修改CButtonColumn.php
在.live()
.on()
我认为它应该有用。
答案 1 :(得分:1)
jquery的实时函数被折旧...如果你使用不同版本的jquery而不是yii的内置... show for jquery for live()方法...使用.on()或者取而代之的是.delegate()方法......我不确定......但如果你使用的是其他jquery版本,那么它可以是一个解决方案...
从此页面Jquery live() documentation 从jQuery 1.7开始,不推荐使用.live()方法。使用.on()附加事件处理程序。旧版jQuery的用户应该使用.delegate()而不是.live()。
所以它不适用于jquery版本> = 1.7
答案 2 :(得分:0)
您可以通过执行此操作重新编写默认的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");'
. '}'
),
)