欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

用jQuery打造TabPanel效果代碼

 更新時間:2010年05月22日 02:24:54   作者:  
這次我們要實(shí)現(xiàn)的控件時Tab控件,在實(shí)際的應(yīng)用中也比較多
如大量信息查看,當(dāng)網(wǎng)頁多窗口框架等都會用到,現(xiàn)在網(wǎng)上基于jquery Tab控件,其實(shí)也蠻多了,我以前用過的idtabs,就比較簡單實(shí)用,也是比較靈活,但是對于復(fù)雜情況就要編碼多些,太簡單了些。還有就是jquery UI的里面的tab控件(沒用過,我對jquery ui不太感冒),另外就是近期有點(diǎn)小火的easyui 中的tab控件,最早在javaeye上面看到的,界面還算漂亮,因?yàn)橹皼]開源,所以一直沒跟進(jìn)(好像最近開源了,前幾天下載了看看,編碼風(fēng)格有點(diǎn)像prototype,看不出jquery的影子,不知道為什么叫jquery easyui呵呵,因?yàn)闆]太深入去學(xué)習(xí),也不好做其他評價)。說了那么多,我們還是回到主題,因?yàn)榉N種原因不得不想著自己開發(fā)一個吧。于是就有了這篇,先來看看效果吧。

下圖是單網(wǎng)頁多窗口框架的效果圖

 

下圖是文末提供調(diào)用示例的效果截圖。

 

大家可以看到了還是使用ExtJs的效果。其實(shí)CSS基本上是直接copy它的。我覺得它那個就非常好看,當(dāng)然實(shí)際使用的時候大家有能力完全可以自己樣子

第一 我們還是從HTML開始吧

注:我先控件的思路始終是先確定HTML結(jié)構(gòu),其次是樣式,最終才是js實(shí)現(xiàn)的事件方法等。

其實(shí)看圖我們就可以基本確定,tab控件主要有兩個部分的html 一個是頭,用于放tab選項卡的;另外一個是體,是內(nèi)容的容器。那么就是兩個Div容器,講tab控件分成了header和body兩部分。

其中header部分因?yàn)榘噙x項卡 所以很容易想到ul +li的配合。來看一下header中的實(shí)際html結(jié)構(gòu)

 

通過通過其中l(wèi)i即是一個選項卡,第一個a是關(guān)閉按鈕,第二個a才是實(shí)際內(nèi)容 通過嵌套標(biāo)簽來實(shí)現(xiàn) 左右中的背景圖片設(shè)置(這個做法比較多見的)。當(dāng)然能夠有個好的效果,還是要靠CSS支持。必須對CSS有一定的了解。

Body的結(jié)構(gòu)則更簡單就是div嵌套div就就結(jié)束了。

第二 CSS樣式表

因?yàn)镃SS是copy EXTJS的我也就不多介紹了。大家可以看代碼下載里面的實(shí)際代碼,如果有問題可以再溝通交流

第三:開始編寫JS了

老規(guī)矩先來一段完整的JS代碼,大概有500行左右的代碼,其實(shí)我換行比較勤快,實(shí)際的代碼量其實(shí)還是比較少。

復(fù)制代碼 代碼如下:

; (function ($) {
$.fn.tabpanel =function(option){
var dfop ={
items:[], //選項卡數(shù)據(jù)項 {id,text,classes,disabled,closeable,content,url,cuscall,onactive}
width:500,
height:400,
scrollwidth:100,//如果存在滾動條,點(diǎn)擊按鈕次每次滾動的距離
autoscroll:true //當(dāng)選項卡寬度大于容器時自動添加滾動按鈕
};
var headerheight=28;
$.extend(dfop, option);
var me =$(this).addClass("x-tab-panel").width(dfop.width);
innerwidth = dfop.width-2;
//構(gòu)建Tab的Html
var tcs= dfop.autoscroll?"x-tab-scrolling-top":"";
var header = $("<div class='x-tab-panel-header x-unselectable "+tcs+"' unselectable='on' style='width:"+innerwidth+"px;MozUserSelect:none;KhtmlUserSelect:none;'></div>");
var stripwrap = $("<div class='x-tab-strip-wrap'/>");
var scrollerright = $("<div class='x-tab-scroller-right x-unselectable' style='height: 24px; visibility: hidden; mozuserselect: none; khtmluserselect: none;' unselectable='on'/>");
var scrollerleft = $("<div class='x-tab-scroller-left x-unselectable' style='height: 24px; visibility: hidden; mozuserselect: none; khtmluserselect: none;' unselectable='on'/>");
var ulwrap = $("<ul class='x-tab-strip x-tab-strip-top'></ul>");
var stripspacer = $("<div class='x-tab-strip-spacer'/>");
var litemp =[];
for(var i=0,l=dfop.items.length; i<l ;i++)
{
var item =dfop.items[i];
builditemlihtml(item,litemp);
}
litemp.push("<li class='x-tab-edge'/><div class='x-clear'></div>");
ulwrap.html(litemp.join(""));
litemp =null;
stripwrap.append(ulwrap);
if(dfop.autoscroll)
{
header.append(scrollerright).append(scrollerleft);
}
header.append(stripwrap).append(stripspacer);
var bodyheight=dfop.height-headerheight;
var bodywrap = $("<div class='x-tab-panel-bwrap'/>");
var body = $("<div class='x-tab-panel-body x-tab-panel-body-top'/>").css({width:innerwidth,height:bodyheight});
var bodytemp=[];
for(var i=0,l=dfop.items.length; i<l ;i++){
var item =dfop.items[i];
builditembodyhtml(item,bodytemp);
}
body.html(bodytemp.join("")).appendTo(bodywrap);
me.append(header).append(bodywrap);
initevents();
function builditemlihtml(item,parray)
{
parray.push("<li id='tab_li_",item.id,"' class='",item.isactive?"x-tab-strip-active":"",item.disabled?"x-tab-strip-disabled":"",item.closeable?" x-tab-strip-closable":"",item.classes?" x-tab-with-icon":"","'>");
parray.push("<a class='x-tab-strip-close' onclick='return false;'/>");
parray.push("<a class='x-tab-right' onclick='return false;' href='#'>");
parray.push("<em class='x-tab-left'><span class='x-tab-strip-inner'><span class='x-tab-strip-text ",item.classes||"","'>",item.text,"</span></span></em>");
parray.push("</a></li>");
}
function builditembodyhtml(item,parray)
{
parray.push("<div class='x-panel x-panel-noborder",item.isactive?"":" x-hide-display","' id='tab_item_",item.id,"' style='width:",innerwidth,"px'>");
parray.push("<div class='x-panel-bwrap'>");
parray.push("<div class='x-panel-body x-panel-body-noheader x-panel-body-noborder' id='tab_item_content_",item.id,"' style='position:relative; width:",innerwidth,"px; height:",bodyheight,"px; overflow: auto;'>");
if(item.url){
parray.push("<iframe name='tab_item_frame_",item.id,"' width='100%' height='100%' id='tab_item_frame_",item.id,"' src='about:blank' frameBorder='0' />");
}
else if(item.cuscall){
parray.push("<div class='loadingicon'/>");
}
else{
parray.push(item.content);
}
parray.push("</div></div></div>");
}
function initevents()
{
//reset scoller
resetscoller();
scollerclick();
ulwrap.find("li:not(.x-tab-edge)").each(function(e){
inititemevents(this);
});
}
function inititemevents(liitem)
{
liswaphover.call(liitem);
liclick.call(liitem);
closeitemclick.call(liitem);
}
function scollerclick()
{
if(dfop.autoscroll)
{
scrollerleft.click(function(e){scolling("left")});
scrollerright.click(function(e){scolling("right")});
}
}
function resetscoller()
{
if(dfop.autoscroll)
{
var edge = ulwrap.find("li.x-tab-edge");
var eleft =edge.position().left;
var sleft = stripwrap.attr("scrollLeft");
if( sleft+eleft>innerwidth )
{
header.addClass("x-tab-scrolling");
scrollerleft.css("visibility","visible");
scrollerright.css("visibility","visible");
if(sleft>0)
{
scrollerleft.removeClass("x-tab-scroller-left-disabled");
}
else{
scrollerleft.addClass("x-tab-scroller-left-disabled");
}
if(eleft>innerwidth)
{
scrollerright.removeClass("x-tab-scroller-right-disabled");
}
else{
scrollerright.addClass("x-tab-scroller-right-disabled");
}
dfop.showscrollnow =true;
}
else
{
header.removeClass("x-tab-scrolling");
stripwrap.animate({"scrollLeft":0},"fast");
scrollerleft.css("visibility","hidden");
scrollerright.css("visibility","hidden");
dfop.showscrollnow =false;
}
}
}
//
function scolling(type,max)
{
//debugger;
if(!dfop.autoscroll || !dfop.showscrollnow)
{
return;
}
//debugger;
//var swidth = stripwrap.attr("scrollWidth");
var sleft = stripwrap.attr("scrollLeft");
var edge = ulwrap.find("li.x-tab-edge");
var eleft = edge.position().left ;
if(type=="left"){
if(scrollerleft.hasClass("x-tab-scroller-left-disabled"))
{
return;
}
if(sleft-dfop.scrollwidth-20>0)
{
sleft -=dfop.scrollwidth;
}
else{
sleft =0;
scrollerleft.addClass("x-tab-scroller-left-disabled");
}
if(scrollerright.hasClass("x-tab-scroller-right-disabled"))
{
scrollerright.removeClass("x-tab-scroller-right-disabled");
}
stripwrap.animate({"scrollLeft":sleft},"fast");
}
else{
if(scrollerright.hasClass("x-tab-scroller-right-disabled") && !max)
{
return;
}
//left + ;
if(max || (eleft>innerwidth && eleft-dfop.scrollwidth-20<=innerwidth))
{
//debugger;
sleft = sleft+eleft-(innerwidth-38) ;
scrollerright.addClass("x-tab-scroller-right-disabled");
// sleft = eleft-innerwidth;
}
else
{
sleft +=dfop.scrollwidth;
}
if(sleft>0)
{
if(scrollerleft.hasClass("x-tab-scroller-left-disabled"))
{
scrollerleft.removeClass("x-tab-scroller-left-disabled");
}
}
stripwrap.animate({"scrollLeft":sleft},"fast");
}
}
function scollingToli(liitem)
{
var sleft = stripwrap.attr("scrollLeft");
var lleft = liitem.position().left;
var lwidth = liitem.outerWidth();
var edge = ulwrap.find("li.x-tab-edge");
var eleft = edge.position().left ;
if(lleft<=0)
{
sleft +=(lleft-2) ;
if(sleft<0)
{
sleft=0;
scrollerleft.addClass("x-tab-scroller-left-disabled");
}
if(scrollerright.hasClass("x-tab-scroller-right-disabled"))
{
scrollerright.removeClass("x-tab-scroller-right-disabled");
}
stripwrap.animate({"scrollLeft":sleft},"fast");
}
else{
if(lleft+lwidth>innerwidth-40)
{
sleft = sleft+lleft+lwidth+-innerwidth+40; // 40 =scrollerleft and scrollerrightwidth;
if(scrollerleft.hasClass("x-tab-scroller-left-disabled"))
{
scrollerleft.removeClass("x-tab-scroller-left-disabled");
}
//滾到最后一個了,那么就要禁用right;
if(eleft-(lleft+lwidth+-innerwidth+40)<=innerwidth)
{
scrollerright.addClass("x-tab-scroller-right-disabled");
}
stripwrap.animate({"scrollLeft":sleft},"fast");
}
}
liitem.click();
}
function liswaphover()
{
$(this).hover(function(e){
if(!$(this).hasClass("x-tab-strip-disabled"))
{
$(this).addClass("x-tab-strip-over");
}
},function(e){
if(!$(this).hasClass("x-tab-strip-disabled"))
{
$(this).removeClass("x-tab-strip-over");
}
});
}
function closeitemclick()
{
if($(this).hasClass("x-tab-strip-closable"))
{
$(this).find("a.x-tab-strip-close").click(function(){
deleteitembyliid($(this).parent().attr("id"));
});
}
}
function liclick()
{
$(this).click(function(e){
var itemid = this.id.substr(7);
var curr = getactiveitem();
if( curr !=null && itemid == curr.id)
{
return;
}
var clickitem = getitembyid(itemid);
if(clickitem && clickitem.disabled)
{
return ;
}
if(curr)
{
$("#tab_li_"+curr.id).removeClass("x-tab-strip-active");
$("#tab_item_"+curr.id).addClass("x-hide-display");
curr.isactive =false;
}
if(clickitem)
{
$(this).addClass("x-tab-strip-active");
$("#tab_item_"+clickitem.id).removeClass("x-hide-display");
if(clickitem.url)
{
var cururl = $("#tab_item_frame_"+clickitem.id).attr("src");
if(cururl =="about:blank")
{
$("#tab_item_frame_"+clickitem.id).attr("src",clickitem.url);
}
}
else if(clickitem.cuscall && !clickitem.cuscalled)
{
var panel = $("#tab_item_content_"+clickitem.id);
var ret = clickitem.cuscall(this,clickitem,panel);
clickitem.cuscalled =true;
if(ret) //如果存在返回值,且不為空
{
clickitem.content = ret;
panel.html(ret);
}
}
clickitem.isactive =true;
if(clickitem.onactive)
{
clickitem.onactive.call(this,clickitem);
}
}
});
}
//獲取當(dāng)前活躍項
function getactiveitem()
{
for(var i=0,j=dfop.items.length;i<j ;i++)
{
if(dfop.items[i].isactive)
{
return dfop.items[i];
break;
}
}
return null;
}
//根據(jù)ID獲取Item數(shù)據(jù)
function getitembyid(id)
{
for(var i=0,j=dfop.items.length;i<j ;i++)
{
if(dfop.items[i].id == id)
{
return dfop.items[i];
break;
}
}
return null;
}
function getIndexbyId(id)
{
for(var i=0,j=dfop.items.length;i<j ;i++)
{
if(dfop.items[i].id == id)
{
return i;
break;
}
}
return -1;
}
//添加項
function addtabitem(item)
{
var chkitem =getitembyid(item.id);
if(!chkitem){
var isactive =item.isactive;
item.isactive =false;
var lastitem = dfop.items[dfop.items.length-1];
dfop.items.push(item);
var lastli = $("#tab_li_"+lastitem.id);
var lastdiv = $("#tab_item_"+lastitem.id);
var litemp =[];
var bodytemp = [];
builditemlihtml(item,litemp);
builditembodyhtml(item,bodytemp);
var liitem = $(litemp.join(""));
var bodyitem= $(bodytemp.join(""));
lastli.after(liitem);
lastdiv.after(bodyitem);
//事件
var li = $("#tab_li_"+item.id);
inititemevents(li);
if(isactive)
{
li.click();
}
resetscoller();
scolling("right",true);
}
else{
alert("指定的tab項已存在!");
}
}
function openitemOrAdd(item,allowAdd)
{
var checkitem = getitembyid(item.id);
if(!checkitem && allowAdd )
{
addtabitem(item);
}
else{
var li = $("#tab_li_"+item.id);
scollingToli(li);
}
}
//移除一個tab 項
function deleteitembyliid(liid)
{
var id= liid.substr(7);
$("#"+liid).remove();
$("#tab_item_"+id).remove();
var index = getIndexbyId(id);
if(index>=0)
{
var nextcur;
if(index < dfop.items.length -1)
{
nextcur = dfop.items[index+1];
}
else if(index>0){
nextcur = dfop.items[index-1];
}
if(nextcur)
{
$("#tab_li_"+nextcur.id).click();
}
dfop.items.splice(index,1);
resetscoller();
scolling("right",true);
}
}
function resize(width,height)
{
if(width ==dfop.width && height ==dfop.height)
{
return;
}
if(width){ dfop.width=width};
if(height){ dfop.height =height;}
innerwidth = width-2;
bodyheight=dfop.height-headerheight;
me.css("width",dfop.width);
header.css("width",innerwidth);
body.css({width:innerwidth,height:bodyheight});
for(var i=0,j=dfop.items.length;i<j;i++)
{
var item =dfop.items[i];
$("#tab_item_"+item.id).css({width:innerwidth});
$("#tab_item_content_"+item.id).css({width:innerwidth,height:bodyheight});
}
resetscoller();
}
//設(shè)置選項卡項是否disabled
function setdisabletabitem(itemId,disabled)
{
var chitem= getitembyid(itemId);
if(!chitem || chitem.disabled ==disabled)
{
return;
}
if(disabled)
{
chitem.disabled =true;
$("#tab_item_"+item.id).addClass("x-tab-strip-disabled");
}
else{
chitem.disabled =false;
$("#tab_item_"+item.id).removeClass("x-tab-strip-disabled");
}
}
me[0].tab = {
addtabitem:addtabitem,
opentabitem:openitemOrAdd,
resize:resize,
setdisabletabitem:setdisabletabitem
};
};
$.fn.addtabitem =function(item)
{
if(this[0].tab)
{
return this[0].tab.addtabitem(item);
}
return false;
}
$.fn.opentabitem =function(item,orAdd)
{
if(this[0].tab)
{
return this[0].tab.opentabitem(item,orAdd);
}
return false;
}
$.fn.resizetabpanel =function(w,h)
{
if(this[0].tab)
{
return this[0].tab.resize(w,h);
}
return false;
}
$.fn.setdisabletabitem =function(itemId,disabled)
{
if(this[0].tab)
{
return this[0].tab.setdisabletabitem(itemId,disabled);
}
return false;
}
})(jQuery);

接著我們來一步一步來分析我的實(shí)現(xiàn),開始還是編寫jQuery控件的“模板”,關(guān)于為什么要這么寫,請參考這篇的說明
復(fù)制代碼 代碼如下:

; (function ($) {
$.fn.tabpanel =function(option){
};
)(jQuery);

接著就是編寫默認(rèn)參數(shù)
復(fù)制代碼 代碼如下:
var dfop ={
items:[], //選項卡數(shù)據(jù)項 {id,text,classes,disabled,closeable,content,url,cuscall,onactive}
width:500,
height:400,
scrollwidth:100,//如果存在滾動條,點(diǎn)擊按鈕次每次滾動的距離
autoscroll:true //當(dāng)選項卡寬度大于容器時自動添加滾動按鈕
};

默認(rèn)參數(shù)還是比較簡單,我已加上了注釋,其中就是item數(shù)組的項麻煩些,不過我相信大家通過字面的意思就已經(jīng)知道大半了,我還是描述一下吧:id 即標(biāo)示,必須唯一、text顯示的文本、classes 特定的樣式,如效果中的主頁,我加了個圖標(biāo),就通過此屬性實(shí)現(xiàn)、disabled 是否禁用、closeable 是否可關(guān)閉、

content 和url 和cuscall 三個只要設(shè)置其中之一即可,content就是實(shí)際的內(nèi)容html、url標(biāo)示內(nèi)容為網(wǎng)頁,自動往內(nèi)容中添加iframe,cuscall則是自定義,即內(nèi)容顯示什么有cuscall執(zhí)行的結(jié)果來決定,可通過此屬性來實(shí)現(xiàn)異步content內(nèi)容。

onactive是指當(dāng)tab項被激活時觸發(fā)的事件。 是一個接受item內(nèi)容的函數(shù),詳見demo

參數(shù)設(shè)置完了,通過外部傳遞的參數(shù)來更新默認(rèn)的參數(shù):

$.extend(dfop, option);

接著就是構(gòu)建html的部分,這部分比較長,我就不重復(fù)貼代碼了。

當(dāng)我們把html構(gòu)建完成之后,就要給html元素添加事件,包括 選項卡的點(diǎn)擊事件,左移按鈕,右移按鈕的點(diǎn)擊事件,選項卡的鼠標(biāo)hover效果事件等。

復(fù)制代碼 代碼如下:


function initevents()
{
//reset scoller
resetscoller(); //設(shè)置默認(rèn)是否出現(xiàn)滾動掉
scollerclick(); //滾動條的點(diǎn)擊事件,如果存在的話
ulwrap.find("li:not(.x-tab-edge)").each(function(e){
inititemevents(this); //給每個選項卡 添加事件
});
}
function inititemevents(liitem)
{
liswaphover.call(liitem); //選項卡的鼠標(biāo)hover效果
liclick.call(liitem); //選項卡的點(diǎn)擊事件
closeitemclick.call(liitem); // 點(diǎn)擊關(guān)閉按鈕的事件
}


至于事件的實(shí)現(xiàn),其實(shí)一個個來做,各個擊破也就簡單了。主要繁瑣在控制滾動按鈕的出現(xiàn)和禁用等的處理上,其他點(diǎn)擊事件等都比較簡單。

最后就是公開方法,和為了公開這些方法來編寫一些內(nèi)部方法,這個tabpanel自然還是比較簡單易用,同時擴(kuò)展性。大家可以根據(jù)實(shí)際的需求做些調(diào)整,當(dāng)然現(xiàn)在的功能應(yīng)該也滿足大部分的要求了。

最后來看一下公開了哪些方法:

1:動態(tài) 新增tab項的方法,即通過js動態(tài)新增tab項,這里其實(shí)就是對items數(shù)據(jù)的維護(hù),然后重新調(diào)用tabitem的輸出html方法,最后單獨(dú)為其設(shè)置事件。簡單

2:選中或者新增。這也是通過js調(diào)用的方法,是對上一方法的擴(kuò)展,即可通過js讓某個tab項激活,如果該項不存在則通過參數(shù)來新增該選項卡

3:重新設(shè)置tabpanel的大小,即通過js重新設(shè)置tabpanel的大小,這個在窗口大小變化時調(diào)用,非常實(shí)用哦。

4:設(shè)置某項為禁用,通過js方法設(shè)置某項tabitem狀態(tài)為禁用。


最后大家可以通過 代碼 包括之前控件的實(shí)例,我已經(jīng)提供了一個壓縮包,但是我更推薦大家實(shí)用SVN獲取最新代碼。因?yàn)橛械臅r候一些小的變動我就不發(fā)文告知了。

http://code.google.com/p/xjplugin/downloads/list

http://xiazai.jb51.net/201005/yuanma/xjPlugin_addtabpanel.rar

相關(guān)文章

  • jquery.autocomplete修改實(shí)現(xiàn)鍵盤上下鍵自動填充示例

    jquery.autocomplete修改實(shí)現(xiàn)鍵盤上下鍵自動填充示例

    根據(jù)需求要實(shí)現(xiàn)通過鍵盤上下移動,獲得聯(lián)想菜單中的值,如同google baidu的查詢功能,下面的代碼是自己手寫的,喜歡的朋友可以嘗試操作下
    2013-11-11
  • jQuery動畫animate方法使用介紹

    jQuery動畫animate方法使用介紹

    用于創(chuàng)建自定義動畫的函數(shù)。這個函數(shù)的關(guān)鍵在于指定動畫形式及結(jié)果樣式屬性對象,下面為大家詳細(xì)介紹下animate方法的具體使用,感興趣的朋友可以了解下哈
    2013-05-05
  • jquery事件綁定方法介紹

    jquery事件綁定方法介紹

    這篇文章介紹了jquery事件綁定的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-03-03
  • 分享jQuery網(wǎng)頁元素拖拽插件

    分享jQuery網(wǎng)頁元素拖拽插件

    這篇文章主要介紹了jQuery網(wǎng)頁元素拖拽插件的實(shí)現(xiàn)代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-06-06
  • 簡單的jQuery拖拽排序效果的實(shí)現(xiàn)(增強(qiáng)動態(tài))

    簡單的jQuery拖拽排序效果的實(shí)現(xiàn)(增強(qiáng)動態(tài))

    這篇文章主要介紹了簡單的jQuery拖拽排序效果的實(shí)現(xiàn)(增強(qiáng)),增強(qiáng)動態(tài)增加div效果,代碼簡單,很容易實(shí)現(xiàn),需要的朋友可以參考下
    2017-02-02
  • jquery實(shí)現(xiàn)保存已選用戶

    jquery實(shí)現(xiàn)保存已選用戶

    這篇文章主要介紹了jquery實(shí)現(xiàn)保存已選用戶,需要的朋友可以參考下
    2014-07-07
  • jQuery ajax全局函數(shù)處理session過期后的ajax跳轉(zhuǎn)問題

    jQuery ajax全局函數(shù)處理session過期后的ajax跳轉(zhuǎn)問題

    這篇文章主要介紹了基于jQuery的全局ajax函數(shù)處理session過期后的ajax操作的相關(guān)資料,需要的朋友可以參考下
    2016-06-06
  • JQuery之proxy實(shí)現(xiàn)綁定代理方法

    JQuery之proxy實(shí)現(xiàn)綁定代理方法

    下面小編就為大家?guī)硪黄狫Query之proxy實(shí)現(xiàn)綁定代理方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-08-08
  • jQuery層次選擇器選擇元素使用介紹

    jQuery層次選擇器選擇元素使用介紹

    層次選擇器:通過DOM元素間的層次關(guān)系獲取元素,其主要的層次關(guān)系包括后代、父子、相鄰、兄弟關(guān)系,通過其中基類關(guān)系可以方便快捷地定位元素,感興趣的朋友可以了解下
    2013-04-04
  • JQuery實(shí)現(xiàn)動態(tài)操作表格

    JQuery實(shí)現(xiàn)動態(tài)操作表格

    本文主要分享了jQuery實(shí)現(xiàn)對一個表格動態(tài)的添加行,刪除行,并且對表格中內(nèi)容進(jìn)行非空驗(yàn)證的示例代碼。具有很好的參考價值,下面跟著小編一起來看下吧
    2017-01-01

最新評論