jQuery与ExtJS之选择实例分析


Posted in Javascript onAugust 19, 2010

Examples
下面是PHP中生成的表页:

<p><a href="<?= $this->url(array('controller'=>'contact', 
'action'=>'add'));?>">Add new Contact</a></p> 
<table class="contactTable" id="contactTable"> 
<thead> 
<tr> 
<th class="sortable">Contact</th> 
<th class="sortable">Address</th> 
<th class="sortable">Phone Number</th> 
<th class="sortable">Email</th> 
<th> </th> 
</tr> 
</thead> 
<tbody> 
<?php foreach($this->contacts as $contact) { ?> 
<tr> 
<td><?= $this->escape($contact->name);?></td> 
<td><?= str_replace(array("\n", "\\n", "\\\n", "\n\r", "\\n\\r", "\\\n\\\r", "\r", "\\r", "\\\r"), ' ', $this->escape($contact->address));?></td> 
<td><?= $this->escape($contact->phone_number);?></td> 
<td><?= $this->escape($contact->email);?></td> 
<td> 
<a href="<?= $this->url(array('controller'=>'contact', 
'action'=>'edit', 'id'=>$contact->id));?>">Edit</a> 
<a href="<?= $this->url(array('controller'=>'contact', 
'action'=>'delete', 'id'=>$contact->id));?>">Delete</a> 
</td> 
</tr> 
<?php } ?> 
</tbody> 
</table>

jQuery
jQuery的方法是使用tablesorter插件。 它是一个函数与几个配置参数以下的代码:
<?php // adding scripts 
$headScript = ' 
$(function(){ 
$("table").tablesorter({ 
sortList: [ [0,0] ], 
widgets: [\'zebra\'], 
// pass the headers argument and assign an object 
headers: { 
// assign the fifth column (we start counting zero) 
4: { 
// disable it by setting the property sorter to false 
sorter: false 
} 
} 
}); 
}); 
' $this->headScript()->appendFile('/js/jquery.tablesorter.js') 
->appendScript($headScript); ; 
?>

注:headScript()业务是一个Zend框架的事情,所以你可以控制哪些JavaScript以显示在每一页上。
Ext JS
该分机 js中 的方法是一个比较复杂。 您创建一个数据存储,定义创建网格(表内存),然后添加数据,并重新渲染的东西。 下面是代码:
<?php // adding scripts 
$headScript = " 
$(document).ready(function(){ 
$('#wheelink').bind('click',function() { 
Ext.Msg.alert('Woot!', 'Thanks for clicking me!'); 
}); 
}); 
Ext.onReady(function() { 
// create the grid 
var grid = new Ext.grid.TableGrid(\"contactTable\", { 
stripeRows: true // stripe alternate rows 
}); 
grid.render(); 
}); 
/** 
* @class Ext.grid.TableGrid 
* @extends Ext.grid.Grid 
* A Grid which creates itself from an existing HTML table element. 
* @constructor 
* @param {String/HTMLElement/Ext.Element} table The table element from which this grid will be created - 
* The table MUST have some type of size defined for the grid to fill. The container will be 
* automatically set to position relative if it isn't already. 
* @param {Object} config A config object that sets properties on this grid and has two additional (optional) 
* properties: fields and columns which allow for customizing data fields and columns for this grid. 
* @history 
* 2007-03-01 Original version by Nige Animal White 
* 2007-03-10 jvs Slightly refactored to reuse existing classes 
*/ 
Ext.grid.TableGrid = function(table, config) { 
config = config || {}; 
Ext.apply(this, config); 
var cf = config.fields || [], ch = config.columns || []; 
table = Ext.get(table); 
var ct = table.insertSibling(); 
var fields = [], cols = []; 
var headers = table.query(\"thead th\"); 
for (var i = 0, h; h = headers[i]; i++) { 
var text = h.innerHTML; 
var name = 'tcol-'+i; 
fields.push(Ext.applyIf(cf[i] || {}, { 
name: name, 
mapping: 'td:nth('+(i+1)+')/@innerHTML' 
})); 
cols.push(Ext.applyIf(ch[i] || {}, { 
'header': text, 
'dataIndex': name, 
'width': h.offsetWidth, 
'tooltip': h.title, 
'sortable': true 
})); 
} 
var ds = new Ext.data.Store({ 
reader: new Ext.data.XmlReader({ 
record:'tbody tr' 
}, fields) 
}); 
ds.loadData(table.dom); 
var cm = new Ext.grid.ColumnModel(cols); 
if (config.width || config.height) { 
ct.setSize(config.width || 'auto', config.height || 'auto'); 
} else { 
ct.setWidth(table.getWidth()); 
} 
if (config.remove !== false) { 
table.remove(); 
} 
Ext.applyIf(this, { 
'ds': ds, 
'cm': cm, 
'sm': new Ext.grid.RowSelectionModel(), 
autoHeight: true, 
autoWidth: false 
}); 
Ext.grid.TableGrid.superclass.constructor.call(this, ct, {}); 
}; 
Ext.extend(Ext.grid.TableGrid, Ext.grid.GridPanel); 
" $this->headScript()->appendFile('/js/ext-jquery-adapter.js') 
->appendFile('/js/ext-all-debug.js') 
->appendScript($headScript); ; 
?>

所以,现在的比较:
对于我们的用途,jQuery是一个更合适。 该js中 的功能更难以配置,这是需要我们的处理的,这是很难定义。 我宁愿在 js中 ,当我需要一个更先进的 用户界面 为 GWT的,或在Adobe应用程序。 一个内线优势 js中 是交换了一些东西可以改变你的网格(表),使其从一个填充有数据 的JSON 或 XML的 请求,而不是从拉它 的HTML 表。 使用jQuery,我们将不得不解析 JSON的 自己,或找一些插件,我们会做它。 在我们的例子中,表中的数据已经涵盖了Zend框架,这样在Javascript中再次将是一个功能重复。
因此,他们都非常强大的js库,并把他们的位置和使用。 一般来说,我认为jQuery是一个对大多数Web开发更适合。
Javascript 相关文章推荐
基于jQuery的合并表格中相同文本的相邻单元格的代码
Apr 06 Javascript
jQuery 在光标定位的地方插入文字的插件
May 10 Javascript
JavaScript中“+”的陷阱深刻理解
Dec 04 Javascript
JS实现简单的tab切换选项卡效果
Sep 21 Javascript
Bootstrap轮播插件使用代码
Oct 11 Javascript
bootstrap datetimepicker实现秒钟选择下拉框
Jan 05 Javascript
JavaScript中三个等号和两个等号你了解多少
Jul 04 Javascript
js禁止表单重复提交
Aug 29 Javascript
利用Javascript实现一套自定义事件机制
Dec 14 Javascript
微信小程序手机号码验证功能的实例代码
Aug 28 Javascript
vue2.0基于vue-cli+element-ui制作树形treeTable
Apr 30 Javascript
Vue 实现前进刷新后退不刷新的效果
Jun 14 Javascript
JQuery跨Iframe选择实现代码
Aug 19 #Javascript
JQuery中each()的使用方法说明
Aug 19 #Javascript
jquery获取input的value问题说明
Aug 19 #Javascript
JavaScript开发规范要求(规范化代码)
Aug 16 #Javascript
JavaScript学习历程和心得小结
Aug 16 #Javascript
javascript中的prototype属性使用说明(函数功能扩展)
Aug 16 #Javascript
javascript下高性能字符串连接StringBuffer类
Aug 16 #Javascript
You might like
PHP5中Cookie与 Session使用详解
2013/04/30 PHP
微信公众平台实现获取用户OpenID的方法
2015/04/15 PHP
PHP获取当前文件的父目录方法汇总
2016/07/21 PHP
js创建子窗口并且回传值示例代码
2013/07/02 Javascript
JS写的贪吃蛇游戏(个人练习)
2013/07/08 Javascript
jquery+css3打造一款ajax分页插件(自写)
2014/06/18 Javascript
JavaScript中双叹号!!作用示例介绍
2014/09/21 Javascript
jQuery中DOM树操作之使用反向插入方法实例分析
2015/01/23 Javascript
在easyUI开发中,出现jquery.easyui.min.js函数库问题的解决办法
2015/09/11 Javascript
jQuery Ajax页面局部加载方法汇总
2016/06/02 Javascript
Javascript中引用类型传递的知识点小结
2017/03/06 Javascript
JS 组件系列之BootstrapTable的treegrid功能
2017/06/16 Javascript
Vue2.0结合webuploader实现文件分片上传功能
2018/03/09 Javascript
详解mpvue开发小程序小总结
2018/07/25 Javascript
详解服务端预渲染之Nuxt(介绍篇)
2019/04/07 Javascript
使用原生js编写一个简单的框选功能方法
2019/05/13 Javascript
vue使用@scroll监听滚动事件时,@scroll无效问题的解决方法详解
2019/10/15 Javascript
js实现图片跟随鼠标移动效果
2019/10/16 Javascript
JS实现动态星空背景效果
2019/11/01 Javascript
Python中基本的日期时间处理的学习教程
2015/10/16 Python
浅谈function(函数)中的动态参数
2017/04/30 Python
Python3解决棋盘覆盖问题的方法示例
2017/12/07 Python
Python实现购物车程序
2018/04/16 Python
Python爬虫实现抓取京东店铺信息及下载图片功能示例
2018/08/07 Python
Python实现简易过滤删除数字的方法小结
2019/01/09 Python
python实现银联支付和支付宝支付接入
2019/05/07 Python
django使用xadmin的全局配置详解
2019/11/15 Python
香港No.1得奖零食网:香港零食大王
2016/07/22 全球购物
波兰在线儿童和婴儿用品零售商:pinkorblue
2019/06/29 全球购物
CSS实现fullpage.js全屏滚动效果的示例代码
2021/03/24 HTML / CSS
营销总监岗位职责范本
2014/02/26 职场文书
大学生职业生涯规划书参考模板
2014/03/05 职场文书
法人授权委托书
2014/09/16 职场文书
行政执法作风整顿剖析材料
2014/10/11 职场文书
工程服务质量承诺书
2015/04/29 职场文书
演讲稿之我的初心我的成长
2019/08/12 职场文书