1.在控制面板里怎么弄新增空白面板?急用
2.什么是肖恩·范宁
3.å¦ä½å¨thinkphpä¸ä½¿ç¨b-jui
在控制面板里怎么弄新增空白面板?急用
控制面板里的个人首页维护
里面有自定义空白面板
设置好之后
再把个人首页维护的窗口拉到最下
点击
定制我的首页——添加模块——自定义空白面板(下面有你新创建的,打勾)——最下面的选取——保存
就成功了
什么是肖恩·范宁
肖恩·范宁是全球第一个走红的P2P文件共享平台Napster的创始人。在大多数人眼里,肖恩·范宁算不上是一个“电脑黑客”,但是他对计算机世界的改变正是绝大多数黑客渴望去做却没有做到的。你记得他的时光胶囊网站源码名字吗,也许你知道他的昵称“Napster”,这是因为他的头发又短又卷,充满男子气概,所以大学的朋友都这样称呼他。后来他用这个名字给一个网站命名,通过该网站与朋友分享他最喜欢的音乐。
人物经历
研发出了社交网络工具Rupture
范宁在美国东北大学读书时创立了Napster。不过,在经历过多次由唱片业主导的法律诉讼后,Napster后来成为Roxio公司的资产。年月,范宁又研发出了社交网络工具Rupture,供网络游戏《魔兽世界》的玩家方便地进行沟通。
从大多数人的认知来说,肖恩·范宁很难被称为“黑客”。但是他对计算机世界的改变正是绝大多数黑客渴望去做却未做成的。范宁是全球第一个走红的P2P音乐交换软件Napster的创始人。也正是这个软件开始颠覆传统商业音乐格局。越来越多的人们开始进行网络下载音乐,而不再是跑去商店买CD。
范宁的直播源码网络视频昵称是“Napster”,这是因为他的头发又短又卷,所以大学的朋友都这样称呼他。后来他用这个名字给一个网站命名,通过该网站与朋友分享他最喜欢的音乐。
网站开通后不久范宁就结识了很多朋友,从此该网站上的音乐不断变化,从来没有重复过。人们发现,这种MP3格式的音乐听起来跟CD播放的音乐一样棒,但是前者是免费下载,而每张CD需要美元。为此唱片公司控告范宁,控告所有从Napster网站下载音乐的大学生。最后他们赢了这一仗,却输掉了这场战争。就像凤凰浴火重生一样,唱片公司和范宁最终达成妥协。这个软件开始颠覆传统商业音乐格局,越来越多的人们开始进行网络下载音乐,而不再去商店买CD。现在范宁已经从音乐业中退出。
Napster创造
年6月,美国东北大学学生Shawn Fanning创造了Napster,用于在学生中间搜索、共享MP3音乐文件。Napster上线后迅速风靡各高校内外,springframework5源码当然也就被唱片业视为眼中钉。 年7月,Napster在法庭要求下关闭。
肖恩对Napster最初的创想来自大学时代一次偶然的寝室聚会,当时他就读于波士顿东北大学,喜好音乐的室友不停向他抱怨互联网上低效的MP3音乐链接。这一下子触动了肖恩,他在朦胧之中想出了P2P点对点音乐交换服务的原理,“人们的电脑硬盘上有很多音乐资料,而网络可以创造机会让喜欢音乐的人相互交流。”
除了一些Unix服务器源码和基础的Windows编程,肖恩几乎什么都不懂。他找来一本Unix的编程教程,在大学一二年级放弃了自己的专业课程,挤出时间刻苦攻读编程语言。凭着一股韧劲和坚持,两年之后Napster诞生了。
在开业的三个月内,肖恩疯狂地工作。他一直随身携带着笔记本电脑。不管他身处何方,无论是在观看棒球比赛还是在吃比萨,有一丁点创意,他都可以停下来工作。
早期的Napster程序员很少,网站的每日交作业 源码主要架构几乎是由肖恩一人担当。刚开张的网站也没有像样的办公室,肖恩就跑到在电脑游戏公司工作的舅舅那里上网,并开始为Napster工作。
就这样,肖恩完成了Napster第一个大型程序,这个程序能够搜索音乐文件并且提供检索,所有的音乐文件地址被集中存放在一个的服务器中,这样使用者就能够方便地过滤上百个地址而找到自己需要的MP3文件。
网站试运营时就广受大学网民欢迎,名声一传十十传百,很快就拥有万用户。肖恩也没想到Napster的商业前景竟然如此广阔的——一个大学生的幻想居然将造就一个商业帝国。风险投资商找上肖恩,游说他将Napster商业化。
那是年1月某一天晚上,肖恩与投资商结束会谈后,驾车与表妹一同返回学校。他满脑子都是Napster的事情。“一旦我决定要全身心投入某件事情,我就会把它做到最完美。”
他们回到学校宿舍后,走神的肖恩停下车,独自一人在校园漫步。围着学校绕行一圈后,他对表妹说他不想继续求学了,然后一人钻进汽车里,最近手机论坛源码开走了。他走的如此匆忙,以致于衣服和书籍都没有带走。
离开大学
肖恩辍学离开了大学,成了.com大潮中又一个放弃学位的年轻创业者。但他看到P2P服务的原理通过网站和谐地运行,成千上万的人从中得到了满足和愉悦。他下定决心要把Napster的事业进行到底。
肖恩的献身精神深深感染着身边的每一个人,很多人就因此加入了Napster。肖恩的朋友,Napster的程序员阿里·阿曼达认为,像肖恩这样优秀的技术型管理者与普通人很重要的不同点在于“执着”。“像Napster这样的网站一个人本来是不可能完成,更别说是一个岁的年轻人,但是他做到了。”
根据Media Metrix的数据,Napster几乎是当时成长最快的网站。肖恩作为一个勤奋的IT天才也被媒体们挖掘了出来,包装成数码时代的“音乐先锋”。他成了《财富》、《商业周刊》、《福布斯》和《行业标准》等商业刊物的封面人物,他的脸、他打棒球的英姿和他的名字一起成了网络授权文件交换服务的代名词。
Napster的出现,高兴的是网民,唱片业及其相关的音乐制作产业却倒了大霉。唱片业人士惊讶地发现,几乎所有网民都会熟练地使用音乐格式转换软件或者网络音乐交换服务,把他们手中的CD光盘转制成几十兆的MP3音乐,相互在网上交流。
Napster和肖恩出名了,但是网站的麻烦也随之而来。由于音乐交换服务在法律版权、知识产权方面的先天不足,它触及了传统音乐制作行业的利益。这一点,肖恩创业之初并没有想清楚。
Napster这类音乐交换网站的存在大大地影响了传统产业的利益。根据美林银行的报告,近年来唱片业持续衰退,继年~年三年创下年销售额亿美元佳绩后,年唱片业的业绩滑落到亿美元,年只有亿,而同期网络音乐却是异军突起。
为了争夺网上娱乐市场,世界三大唱片公司——英国的EMI百代公司,德国的贝塔斯曼,美国的AOL时代华纳都推出了各自的在线音乐服务网站,但是它们都无法与Napster竞争。
巨大的商业利益导致双方多次爆发冲突。年月,包括华纳、BMG、百代、索尼、环宇五大唱片公司在内的唱片公司共同起诉Napster。由于涉及网络服务这个新生事物,案件审理一拖再拖。到了年的2月日,法院出具裁决,认定Napster侵权。
这场官司虽未把Napster逼上绝路,但已让其元气大伤。网站不得不修改程序框架和服务流程,并将涉及版权争论的大量音乐文件删除。这样一来Napster就对网民失去了吸引力。根据Juipter公布的数据,与年2月相比,败诉后的Napster用户访问时间和数量分别减少%和%。
人物评价
程序员出身的肖恩尽管是CEO,但是他无力领导Napster与传统巨鳄周旋,只得退位让贤。年7月日,网站宣布任命康奈德·希尔伯斯为公司首席执行官,肖恩退居CTO。希尔伯斯以前是BMG唱片公司执行副总裁兼首席行政官,也曾在美国在线欧洲分部担任要职。
肖恩和Napster都以为,只要找到一个既懂得经营网站业务,又在音乐工业有过任职经验的专业人才,就能改善与传统产业的沟通,网站也就有了出路。但事实上,临阵换将并不能在短时期内改变Napster官司缠身的尴尬局面,何况管理层还要在唱片界不断施压,蚕食其用户的情况下,说服Napster的用户,使用网站提供的收费服务。
Napster此后,Napster可谓命运多舛。BMG唱片公司在年5月宣布收购Napster,但随后在9月被破产法官否决。在清算拍卖中,Roxio得到 了Napster,并在年5月重新发布了Napster 2.0。年8月,Roxio将自己的品牌和消费软件以万美元的价格卖给了Sonic Solutions,并将自己改名为Npaster, Inc.,并于年1月在纳斯达克上市。年9月,美国电器连锁零售商Best Buy百思买公司以1.亿美元的价格收购了Napster,但此后其业务一直难以复兴。
百思买公司年5月宣布,将于当地时间周二在美国重启Napster,提供音乐下载服务,对抗iTunes商店、亚马逊网上音乐商店等同类产品。新 Napster的形式类似于微软的Zune Pass包月制,但价格更低,用户只要每月支付4.美元(微软Zune Pass为每月.美元),就可以无限量下载音乐播放,但每月只有5首可永久保留(微软服务为首)。新Napster目前仅针对美国用户,其曲库拥有超过万首“CD质量”MP3,还包括个频道的网络电台直播等,音乐下载后可传输到iPod、iPhone(手机上网)以及其他MP3播放器或音乐手机播放。
Napster曾是火极一时的音乐分享网站,这一次,它的创始人Shawn Fanning创立了Rupture网站,他的目标是把社交网站带到火爆在线游戏,比如魔兽世界。专家们认为这是一个很有前途的领域,因为数百万的游戏者通过游戏彼此集结成社区,但是由于私人软件的限制使得这些社区不能扩大。
对于Fanning而言,关于 Rupture的想法来自于参与魔兽世界游戏的过程中,这个游戏有万用户。他越来越觉得,对于玩家而言,要组织游戏或知道他人身份上并不是那么容易。
如今,他已经从Ron Conway 和Joi Ito那里获得了种子资金。Conway曾经是 Napster的投资者,后来又投资了 Fanning创建的SnoCap,一家音乐商店,最近和MySpace形成合作。
事实上,在魔兽世界以及其他游戏中,用户也可以设置姓名和个人资料,但是并没有人把这些服务提升到一个新的水平。而Rupture中将会设定一个个人或者是群组的等级,让游戏和聊天更容易。
å¦ä½å¨thinkphpä¸ä½¿ç¨b-jui
B-JUI å端æ¡æ¶
B-JUIï¼Bootstrap for DWZï¼æ¯ä¸ä¸ªå¯å®¢æ·ç«¯æ¡æ¶ï¼åºäºDWZ-jUIå¯å®¢æ·ç«¯æ¡æ¶ä¿®æ¹ã
æ¬ææ¯B-JUIä¸æ使ç¨æåï¼å æ¬ä½¿ç¨ç¤ºä¾ä»£ç ï¼æå ´è¶£çåå¦åèä¸ã
æ¦è§
B-JUIä» æä¸ä¸ªä¸»é¡µé¢(document)ï¼æ¡æ¶å çææå页é¢å°éè¿Ajaxè·ååä½ä¸ºä¸ä¸ªé¡µé¢ç段éå å°ä¸»é¡µé¢ä¸ï¼å¤é¨é¡µé¢åéè¿iframeåµå ¥ä¸»é¡µé¢ï¼ æ¬èä»ç» B-JUIç主页é¢ç»æã
HTML5 æ档类å
åBootstrapï¼ B-JUIä½¿ç¨ HTML5 æ档类åï¼åç §ä¸é¢çæ ¼å¼è¿è¡è®¾ç½®ã
<!DOCTYPE html>
<html lang="zh-CN">
...
</html>
主页é¢ç»æ(ä» bodyé¨å)
主页é¢ç±ä¸ï¼é¡µå¤´ï¼ãä¸å·¦ï¼å¯¼èªèåï¼ãä¸å³ï¼å·¥ä½åºï¼ãä¸ï¼é¡µèï¼åé¨åç»æï¼å ¶ä¸å·¦ä¾§å¯¼èªèåå¯æ¶ç¼©ãç»æå¦ä¸ï¼
<header class="bjui-header" id="bjui-header">
<!-- 页头 -->
</header>
<div class="bjui-leftside" id="bjui-leftside">
<!-- 导èªèå -->
</div>
<div id="bjui-container">
<!-- å·¥ä½åº -->
</div>
<footer class="bjui-footer" id="bjui-footer">
<!-- 页è -->
</footer>
å页é¢ï¼å³é¡µé¢ç段[åé¢ç®ç§°ï¼é¡µç]ï¼ç»æ
页çé常ç±ä¸¤é¨åç»æï¼ä¹å¯ä»¥åªä¿çbjui-pageContenté¨åï¼å ¶ä¸bjui-pageContenté¨åå¯ébjui-headBarï¼é¡¶é¨å·¥å ·æ¡ï¼åbjui-footBarï¼åºé¨å·¥å ·æ¡ï¼ãç»æå¦ä¸ï¼
<div class="bjui-pageHeader">
<!-- 顶é¨æ¨¡å[å¦ï¼åè½æé®ãæç´¢é¢æ¿] -->
</div>
<div class="bjui-pageContent">
<div class="bjui-headBar">
<!-- 顶é¨å·¥å ·æ¡ -->
</div>
<div data-layout-h="0">
<!-- å å®¹åº -->
</div>
<div class="bjui-footBar">
<!-- åºé¨å·¥å ·æ¡ -->
</div>
</div>
data-layout-h å±æ§è¡¨ç¤ºè¯¥å®¹å¨ä¸ºé¡µçèªéåºå¸å±ï¼å½å¼ä¸º0æ¶ï¼B-JUIä¼ä¸ºè¯¥å®¹å¨çé«åº¦èªå¨èµå¼ä¸ºï¼æ¬é¡µçæ»é«åº¦åå»æ¬é¡µçä¸çåºå®å ç´ (bjui-pageHeader\bjui-headBar\bjui-footBar)é«åº¦ã
data-layout-h å±æ§å¼ä¸çäº0æ¶ï¼è¯¥å®¹å¨é«åº¦ä¸ºæ¬é¡µçæ»é«åº¦åå»å±æ§å¼ã
éè¦èªå®ä¹åºå®å ç´ (å级å ç´ ææ)ï¼è¯·ä¸ºè¯¥å ç´ æ·»å å±æ§data-layout-fixed="true"
å®æ´ç页ç详è§B-JUIæºä»£ç çtable.htmlï¼ä» bjui-pageContenté¨åç页ç详è§form.html
å ç´ IDå½åè§è
å 为æ¬æ¡æ¶é»è®¤ææå 容é½ä½äºä¸ä¸ªDocumentä¸ï¼æ以为å ç´ å½åIDçæ¶åéè¦åå°å¯ä¸æ§ï¼å¦æç¡®å®ä¸å¯é¿å çä¼åºç°æéå¤IDçç°è±¡ï¼éè¦æä½å½å页ççå ç´ æ¶ï¼å°½éç¨ï¼
$.CurrentNavtab.find('#dom-id')ï¼å¨å½åæ ç¾å·¥ä½åºä¸æ¥æ¾æå®IDçå ç´ ã
æ $.CurrentDialog.find('#dom-id')ï¼å¨å½åå¼¹çªä¸æ¥æ¾æå®IDçå ç´ ã
æ ç¾å¼å·¥ä½åº(navtab)
B-JUIæ¡æ¶çæ´ä¸ªå·¥ä½åºé¨åå°±æ¯ä¸ä¸ªnavtabç»ä»¶ï¼æ¬ç»ä»¶ä½äºä¸»é¡µé¢ç"#bjui-container"容å¨å ï¼åºå®çhtmlç»æå¦ä¸ï¼
<div id="bjui-navtab" class="tabsPage">
<div class="tabsPageHeader">
<div class="tabsPageHeaderContent">
<ul class="navtab-tab nav nav-tabs">
<li data-tabid="main" class="main active"><a href="javascript:;"><span>æç主页</span></a></li>
</ul>
</div>
<div class="tabsLeft"><i class="fa fa-angle-double-left"></i></div>
<div class="tabsRight"><i class="fa fa-angle-double-right"></i></div>
<div class="tabsMore"><i class="fa fa-angle-double-down"></i></div>
</div>
<ul class="tabsMoreList">
<li><a href="javascript:;">æç主页</a></li>
</ul>
<div class="navtab-panel tabsPageContent layoutBox">
å页çå 容åºå
</div>
</div>
ç¨æ³(å¦ä½å建ä¸ä¸ªnavtab)ï¼
DOMç¹å»è§¦åï¼
<a href="mytab.html" data-toggle="navtab" data-id="mynavtab" data-title="æçä¸å¡é¡µé¢">æå¼navtab</a>
<button type="button" class="btn-green" data-toggle="navtab" data-id="mynavtab" data-url="mytab.html" data-title="æçä¸å¡é¡µé¢">æå¼navtab</button>
jQueryï¼
$(selector).navtab({ id:'æ ç¾çid', url:'è½½å ¥é¡µççurl', title:'æ ç¾çæ é¢'})
åå¾å½ånavtabçå 容容å¨ï¼$.CurrentNavtab
åæ°ï¼
å称 ç±»å é»è®¤å¼ æè¿° id string navtab æ ç¾çIDï¼å¦ææå®éå¤ï¼å°è¦çç°æçIDç¸åæ ç¾ã title string New tab æ ç¾æå¼åæ¾ç¤ºçå称ã url string undefined 请æ±æ°æ®çurlã type string GET Http请æ±æ¹å¼ï¼å¯éâGET/POSTâã data object { } 请æ±urlæ¶ï¼éè¦åéçdataæ°æ®ã
æ¹æ³ï¼
è¿æ ·è°ç¨navtabçæ¹æ³ï¼
$(selector).navtab('æ¹æ³å', åæ°1, ..., åæ°n)
å¦è¦åæ¢å°æ个æ ç¾ï¼
$(selector).navtab('switchTab', æ ç¾ID)
æ¹æ¬å·çåæ°ï¼è¡¨ç¤ºè¯¥åæ°å¯éã
å¯ç¨çæ¹æ³ï¼
switchTab(tabid)ï¼åæ¢å°æ个æ ç¾ã
refresh(tabid)ï¼å·æ°æ个æ ç¾ã
reload(options)ï¼éæ°è½½å ¥æ个æ ç¾ï¼optionsånavtabé»è®¤åæ°ï¼å¦ææªæå®IDï¼åé»è®¤éè½½å ¥å½åæ ç¾ã
closeTab(tabid)ï¼å ³éæ个æ ç¾ã
closeCurrentTab([tabid])ï¼å ³éå½åæ ç¾ã
closeAllTab()ï¼å ³éæææ ç¾ã
äºä»¶ï¼
è¿æ ·çå¬navtabçäºä»¶ï¼
$(document).on('bjui.beforeLoadNavtab', function(e) {
var $navtab = $(e.target)
// do something...
})
å称 æè¿° bjui.beforeLoadNavtab è½½å ¥æ ç¾å 容åçäºä»¶ bjui.beforeCloseNavtab å ³éæ ç¾åçäºä»¶
å¼¹åºçªå£(dialog)
å¼¹åºçªå£å为æ®éå¼¹åºçªå£å模æå¼¹åºçªå£ï¼æ®éå¼¹åºçªå£å¯éè¿taskBarç»ä»¶è¿è¡æå°åçæä½ãå¼¹åºçªå£çDOMç»æä¼æ¾å ¥Bodyä¸ï¼ç»æå¦ä¸ï¼
<div class="bjui-dialog bjui-dialog-container">
<div class="dialogHeader">
<!-- æ大åãæå°åãå ³éçæé®åº -->
<h1><!-- æ é¢ --></h1>
</div>
<div class="dialogContent layoutBox unitBox">
<!-- 页çå å®¹åº -->
</div>
<!-- ç¨äºè°æ´å¤§å°çdivçæ -->
</div>
ç¨æ³(å¦ä½å建ä¸ä¸ªdialog)ï¼
DOMç¹å»è§¦åï¼
<a href="mydialog.html" data-toggle="dialog" data-id="mydialog" data-title="æçå¼¹åºçªå£">æå¼å¼¹åºçªå£</a>
<button type="button" class="btn-green" data-toggle="dialog" data-id="mynavtab" data-url="mytab.html" data-title="æçå¼¹åºçªå£">æå¼å¼¹åºçªå£</button>
jQueryï¼
$(selector).dialog({ id:'å¼¹çªçid', url:'è½½å ¥é¡µççurl', title:'å¼¹çªçæ é¢'})
åå¾å½ådialogï¼$.CurrentDialog
åæ°ï¼
å称 ç±»å é»è®¤å¼ æè¿° id string navtab å¼¹çªçIDï¼å¦ææå®éå¤ï¼å°è¦çç°æçIDç¸åå¼¹çªã title string New tab å¼¹çªæå¼åæ¾ç¤ºçå称ã url string undefined 请æ±æ°æ®çurlã type string GET Http请æ±æ¹å¼ï¼å¯éâGET/POSTâã data object { } 请æ±urlæ¶ï¼éè¦åéçdataæ°æ®ã width int å¼¹çªç宽度ã height int å¼¹çªçé«åº¦ã max boolean false æå¼å¼¹çªæ¶ç´æ¥æ大åã mask boolean false æ¯å¦æ¨¡æçªå£ã resizable boolean true å¯ä»¥è°æ´å¼¹çªç大å°ã drawable boolean true å¯ä»¥æå¨å¼¹çªã maxable boolean true æ¯å¦æ¾ç¤ºæ大åæé®ã minable boolean true æ¯å¦æ¾ç¤ºæå°åæé®ï¼æ¨¡æå¼¹çªæ æï¼ã
æ¹æ³ï¼
è°ç¨æ¹å¼ånavtabï¼ å¦è¦å ³éæ个弹çªï¼
$(selector).dialog('close', å¼¹çªID)
æ¹æ¬å·çåæ°ï¼è¡¨ç¤ºè¯¥åæ°å¯éã
å¯ç¨çæ¹æ³ï¼
switchDialog(id)ï¼åæ¢å°æ个弹çª(模æå¼¹çªæ æ)ã
refresh(id)ï¼å·æ°æ个弹çªã
reload(options)ï¼éæ°è½½å ¥æ个弹çªï¼optionsådialogé»è®¤åæ°ï¼å¦ææªæå®IDï¼åé»è®¤éè½½å ¥å½åå¼¹çªã
close(id)ï¼å ³éæ个弹çªã
closeCurrent()ï¼å ³éå½åå¼¹çªã
äºä»¶ï¼
è¿æ ·çå¬dialogçäºä»¶ï¼
$(document).on('bjui.beforeLoadDialog', function(e) {
var $dialog = $(e.target)
// do something...
})
å称 æè¿° bjui.beforeLoadDialog è½½å ¥å¼¹çªå 容åçäºä»¶ bjui.beforeCloseDialog å ³éå¼¹çªåçäºä»¶
Ajax
æ¬è主è¦ä»ç»B-JUIæ¡æ¶ä¸çAjaxæä½ï¼åè°å½æ°çã
Ajaxæä½ï¼
ajaxæç´¢ - 主è¦ç¨äºæ索表åï¼å页表åï¼ä¾ï¼B-JUIæºç "table.html"ä¸ç#pagerFormï¼
<form id="pagerForm" data-toggle="ajaxsearch" action="table.html" method="post">
ajaxéç½®æç´¢ - 主è¦ç¨äºéç½®æ索表åï¼data-clear-queryå±æ§åè¯formæ¯å¦æ¸ 空æ¥è¯¢åæ°ï¼ä» ä¿çå页åå段æåºä¿¡æ¯ï¼ä¾ï¼B-JUIæºç "table.html"ä¸çæ¸ ç©ºæ¥è¯¢æé®ï¼
<a class="btn btn-orange" href="javascript:;" data-toggle="reloadsearch" data-clear-query="true" data-icon="undo">æ¸ ç©ºæ¥è¯¢</a>
ajaxè½½å ¥ - 主è¦ç¨äºä¸ºæå®å®¹å¨è½½å ¥urlçå 容ï¼data-targetå±æ§å¼ä¸ºéæ©å¨è¡¨è¾¾å¼ï¼åè¯ajaxè½½å ¥çå 容æ¾å°è¯¥å®¹å¨ï¼éåç¨æ¥åå±é¨å·æ°ï¼
<a href="table-edit.html" data-toggle="ajaxload" data-target="#D">å è½½å 容</a>
ajaxå¨ä½ - 主è¦ç¨äºæ§è¡ajaxå½ä»¤ï¼å¦âå é¤âï¼data-confirm-msgå±æ§ç¨äºå¨æä½åè¿è¡ç¡®è®¤æ示ï¼
<a href="del.html" class="btn btn-red" data-toggle="doajax" data-confirm-msg="ç¡®å®è¦å é¤è¯¥è¡ä¿¡æ¯åï¼">å é¤æ°æ®</a>
ajaxå¯¼åº - 主è¦ç¨äºå¯¼åºä¿¡æ¯(ä¸è½½æ件)ï¼data-confirm-msgå±æ§ç¨äºå¨æä½åè¿è¡ç¡®è®¤æ示ï¼
<a href="book1.xlsx" data-toggle="doexport" data-confirm-msg="ç¡®å®è¦å¯¼åºä¿¡æ¯åï¼">导åºå ¨é¨</a>
ajax导åºéä¸é¡¹ - 主è¦ç¨äºå¯¼åºéä¸é¡¹ä¿¡æ¯(ä¸è½½æ件)ï¼data-confirm-msgå±æ§ç¨äºå¨æä½åè¿è¡ç¡®è®¤æ示ï¼data-idnameå±æ§æå®åéå°åå°çå段å称ï¼é»è®¤âidsâï¼data-groupå±æ§ç¨äºæå®å¤éæ¡çnameï¼
<a href="book1.xlsx" data-toggle="doexportchecked" data-confirm-msg="ç¡®å®è¦å¯¼åºéä¸é¡¹åï¼" data-idname="expids" data-group="ids">导åºéä¸é¡¹</a>
ajaxå é¤éä¸é¡¹ - 主è¦ç¨äºå¯¼åºéä¸é¡¹ä¿¡æ¯(ä¸è½½æ件)ï¼data-confirm-msgå±æ§ç¨äºå¨æä½åè¿è¡ç¡®è®¤æ示ï¼data-idnameå±æ§æå®åéå°åå°çå段å称ï¼é»è®¤âidsâï¼data-groupå±æ§ç¨äºæå®å¤éæ¡çnameï¼
<a href="del.html" data-toggle="dodelchecked" data-confirm-msg="ç¡®å®è¦å é¤éä¸é¡¹åï¼" data-idname="delids" data-group="ids">导åºéä¸é¡¹</a>
Ajaxåè°ï¼
ajaxsearchãdoajaxãdodelcheckedä¸ç§ajaxæä½æ¯æèªå®ä¹ajaxåè°å½æ°ï¼èªå®ä¹çåè°å½æ°æ¾å°data-callbackå±æ§ï¼åæ³å¦ä¸ï¼ã
<a href="del.html" class="btn btn-red" data-toggle="doajax" data-confirm-msg="ç¡®å®è¦å é¤è¯¥è¡ä¿¡æ¯åï¼" data-callback="mycallback">å é¤æ°æ®</a>
function mycallback(json) {
//do something...
}
æå¡ç«¯è¿åçJSONåæ°å¦ä¸ï¼
å称 ç±»å æè¿° statusCode int å¿ éãç¶æç (ok = , error = , timeout = )ï¼å¯ä»¥å¨BJUI.initæ¶é ç½®ä¸ä¸ªåæ°çé»è®¤å¼ã message string å¯éãä¿¡æ¯å 容ã tabid string å¯éãå¾ å·æ°navtab idï¼å¤ä¸ªid以è±æéå·åéå¼ï¼å½åçnavtab idä¸éè¦å¡«åï¼å¡«ååå¯è½ä¼å¯¼è´å½ånavtabéå¤å·æ°ã closeCurrent boolean å¯éãæ¯å¦å ³éå½åçªå£(navtabædialog)ã forward string å¯éã跳转å°æ个urlã forwardConfirm string å¯éã跳转urlåç确认æ示信æ¯ã
é»è®¤çåè°å½æ°ä¼æ ¹æ®å½å触åå ç´ çä½ç½®ç¡®å®æ¯å·æ°navtabè¿æ¯dialogï¼ææ¯å±é¨div容å¨ã
å¯è°ç¨çè¿åä¿¡æ¯æ示ï¼
$(selector).bjuiajax('ajaxDone', json)
è¡¨æ ¼
è¡¨æ ¼çClassåBootstrapï¼ä» è°æ´äºpaddingå¼ï¼ä½¿è¡¨æ ¼æ¾ç¤ºå¾æ´ç´§åã
.table å°éçpaddingåæ°´å¹³åé线ã
.table-striped æ¡çº¹ç¶è¡¨æ ¼ [IE8 ä¸æ¯æ]ã
.table-bordered 带边æ¡è¡¨æ ¼ã
.table-hover éå é¼ æ æ¬åææã
è¡¨æ ¼è¡¨å¤´å段æåºæé®å®ç°ï¼
<th data-order-field="sex">å§å</th>
<th data-order-direction="asc" data-order-field="createtime">å建æ¶é´</th>
data-order-field=""å±æ§ä»¤æ¬å段å¯æåºï¼å±æ§å¼ä¸ºä¸åå°äº¤äºçå段å称ã
data-order-directionå±æ§è¡¨ç¤ºæ¬å段çå½åæåºç¶æï¼å¯éå¼(asc/desc)
æ®éè¡¨æ ¼
æ®éçè¡¨æ ¼ï¼å¯æ¾ç¤ºå表ç¶æ¡ç®ï¼æå¸å±è¡¨åï¼è¡¨å¤´å段å¯éå æåºæé®ã
å®æ´çå®ä¾è¯¦è§B-JUIæºä»£ç çtable.htmlã
åºå®è¡¨å¤´è¡¨æ ¼
è¡¨æ ¼ç头å¯åºå®ä½ï¼å¯è°æ´ååç宽度ï¼è¡¨å¤´å段å¯éå æåºæé®ã
<table data-toggle="tablefixed" data-width="%" data-layout-h="0">
è¡¨æ ¼æ·»å å±æ§data-toggle="tablefixed"åå°±ä¼åºå®è¡¨å¤´ï¼B-JUIé»è®¤ä¸ºåºå®ç表头çè¡¨æ ¼æ·»å Classï¼table table-striped table-bordered table-hoverï¼å¦æ该table设置æClassï¼å以设置ç为å
data-widthå±æ§å¯å®ä¹åºå®è¡¨æ ¼ç宽度ï¼é»è®¤ä¸º"%"ï¼å¯è®¾ç½®å¤§äº%æåºå®å¼ï¼å¦ï¼%åé½æ¯åæ³çï¼è¶ è¿navtabå·¥ä½åºç宽度æ¶ä¼åºç°æ¨ªåæ»å¨æ¡ã
å®æ´çå®ä¾è¯¦è§B-JUIæºä»£ç çtable-fixed.htmlã
å¯ç¼è¾è¡¨æ ¼
ç¨äºéè¦å¨ææ·»å ç®åè¡å 容çå°æ¹ã
<table class="table table-bordered table-hover table-striped" data-toggle="tabledit" data-initnum="0" data-layout-h="0">
<thead>
<tr>
<th title="No."><input type="text" name="edit[#index#].id" class="no" data-rule="required" value="1" size="2"></th>
<th title="å§å"><input type="text" name="edit[#index#].name" data-rule="required" value="" size="5"></th>
<th title="" data-addtool="true" width="">
<a href="javascript:;" class="btn btn-red row-del" data-confirm-msg="ç¡®å®è¦å é¤è¯¥è¡ä¿¡æ¯åï¼">å </a>
</th>
</tr>
</thead>
</table>
å®ç°æ¥éª¤ï¼
è¡¨æ ¼æ·»å å±æ§data-toggle="tablefixed"ï¼
theadä¸æ·»å ä¸å¯¹åºç表åä¿¡æ¯ï¼å段åæ¾å°titleå±æ§ä¸ï¼
è¥æ³å¨æåä¸æ¾ç¤ºæ·»å æé®ï¼éå¨å¯¹åºåä¸æ·»å å±æ§data-addtool="true"ï¼
è¥æ¯è¡æ¾ç¤ºå é¤æé®ï¼é为å é¤æé®æ·»å Classrow-delï¼å¦æè¦ç¡®è®¤æè½å é¤ï¼é为å é¤æé®æ·»å å±æ§data-confirm-msg="å é¤æ示信æ¯"ã
è¡¨æ ¼çdata-initnumå±æ§ï¼è¡¨ç¤ºè½½å ¥æ¬é¡µçæ¶ï¼åå§åçæ·»å è¡æ°ï¼å¼ä¸º0æ¶ä¸éåã
å¤é¨è§¦åæ·»å è¡äºä»¶ï¼
æé®å¼ï¼
<button type="button" class="btn-green" data-toggle="tableditadd" data-target="#tabledit1" data-num="1">æ·»å ç¼è¾è¡</button>
data-targetå±æ§è®¾ç½®ç¼è¾è¡¨æ ¼çjQueryéæ©å¨ï¼data-numå±æ§è®¾ç½®ç¹å»æ¶æ·»å çè¡æ°ã
jQueryï¼$(selector).tabledit('add', ç¼è¾è¡¨æ ¼çjQuery对象, å¾ æ·»å çè¡æ°)
$(selector).tabledit('add', $('#tabledit1'), 2)
å®æ´çå®ä¾è¯¦è§B-JUIæºä»£ç çtable-edit.htmlã