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 相关文章推荐
js no-repeat写法 背景不重复
Mar 18 Javascript
JavaScript 学习初步 入门教程
Mar 25 Javascript
javascript数字数组去重复项的实现代码
Dec 30 Javascript
jQuery中last()方法用法实例
Jan 06 Javascript
Vue + Webpack + Vue-loader学习教程之功能介绍篇
Mar 14 Javascript
微信小程序封装http访问网络库实例代码
May 24 Javascript
jQuery 实现图片的依次加载图片功能
Jul 06 jQuery
最全正则表达式总结:验证QQ号、手机号、Email、中文、邮编、身份证、IP地址等
Aug 16 Javascript
ionic App问题总结系列之ionic点击系统返回键退出App
Aug 19 Javascript
jQuery实现的简单动态添加、删除表格功能示例
Sep 21 jQuery
使用vue-aplayer插件时出现的问题的解决
Mar 02 Javascript
vue form表单post请求结合Servlet实现文件上传功能
Jan 22 Vue.js
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
提升PHP执行速度全攻略(上)
2006/10/09 PHP
PHP 文本文章分页代码 按标记或长度(不涉及数据库)
2012/06/07 PHP
ThinkPHP实例化模型的四种方法概述
2014/08/22 PHP
discuz图片顺序混乱解决方案
2015/07/29 PHP
php curl 模拟登录并获取数据实例详解
2016/12/22 PHP
php实例化一个类的具体方法
2019/09/19 PHP
利用WebBrowser彻底解决Web打印问题(包括后台打印)
2009/06/22 Javascript
基于jQuery的获取标签名的代码
2012/07/16 Javascript
显示今天的日期js代码(阳历和农历)
2014/09/30 Javascript
简述jQuery ajax的执行顺序
2016/01/05 Javascript
js获取新浪天气接口的实现代码
2016/06/06 Javascript
jQuery实现右下角可缩放大小的层完整实例
2016/06/20 Javascript
JavaScript原生节点操作小结
2017/01/17 Javascript
Vue中如何实现轮播图的示例代码
2017/07/27 Javascript
详解实现一个通用的“划词高亮”在线笔记功能
2019/04/23 Javascript
javascript实现的字符串转换成数组操作示例
2019/06/13 Javascript
使用vue for时为什么要key【推荐】
2019/07/11 Javascript
基于JS实现视频上传显示进度条
2020/05/12 Javascript
微信小程序实现多图上传
2020/06/19 Javascript
Python模块学习 re 正则表达式
2011/05/19 Python
python自定义类并使用的方法
2015/05/07 Python
利用Python如何生成随机密码
2016/04/20 Python
Python 实现12306登录功能实例代码
2018/02/09 Python
python 去除txt文本中的空格、数字、特定字母等方法
2018/07/24 Python
Python编程深度学习计算库之numpy
2018/12/28 Python
python学生管理系统学习笔记
2019/03/19 Python
python利用多种方式来统计词频(单词个数)
2019/05/27 Python
python实现邮件发送功能
2019/08/10 Python
利用python计算时间差(返回天数)
2019/09/07 Python
Python实现井字棋小游戏
2020/03/09 Python
keras 多任务多loss实例
2020/06/22 Python
CSS3 实现图形下落动画效果
2020/11/13 HTML / CSS
联想新西兰官方网站:Lenovo New Zealand
2018/10/30 全球购物
KIKO MILANO西班牙官网:意大利领先的化妆品和护肤品品牌
2019/05/03 全球购物
法制教育演讲稿
2014/09/10 职场文书
导游词怎么写
2015/02/04 职场文书