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 视图总是提供直播不是一个功能的主要内容,如果未能解决你的问题,请参考以下文章

Kendo UI Grid:自定义下拉提供程序在视图模式下不显示文本

yiic 命令在哪里?

Yiic和migrate

如何使用纹理视图而不是表面视图从相机直播视频?

TCP/IP经典问题总结

Yii,yiic 抛出异常 CConsoleApplication.defaultController