Yiic Grid视图总是给予直播不是一个功能

时间:2013-12-17 12:59:49

标签: javascript php jquery yii

我知道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函数的整个文件夹,但我找不到它。请帮忙!

3 个答案:

答案 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");'
                . '}'
            ),
        )