首先說樹形結(jié)構(gòu),國內(nèi)有個開源的js控件叫zTree,支持復選。
康平網(wǎng)站建設(shè)公司成都創(chuàng)新互聯(lián),康平網(wǎng)站設(shè)計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為康平上千提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站制作要多少錢,請找那個售后服務(wù)好的康平做網(wǎng)站的公司定做!
然后下拉框你可能需要自己做一個(html輸入框+右邊的一個圖標按鈕)。
最后,用一個隱藏的div把樹形結(jié)構(gòu)包起來,這個div設(shè)置成絕對定位,在下拉框右側(cè)選擇按鈕的單擊事件處理函數(shù)里,顯示這個隱藏的div,并把它的位置設(shè)置成在下拉框下面就行了。
思路就是這樣,要么樓主可以找找有沒有其他更現(xiàn)成的控件,extjs4我記得有類似的,但是他的復選功能不太符合中國習慣,也許現(xiàn)在的版本改好了,你可以查查試試看。
然后根據(jù)鼠標左鍵在菜單坐標內(nèi)按下放開的事件提取當前鼠標的x,y坐標,然后修改屬性菜單的top和left屬性 或者當鼠標在菜單坐標內(nèi)按下之后觸發(fā)鼠標的移動事件,然后在移動事件里設(shè)置菜單的top和left對應(yīng)鼠標當前坐標y和x,這樣當鼠標移動時菜單的坐標也會根本改變,實現(xiàn)同步移動
var arr=[];
var fun = function(arr, key){
var result = [];
for(var i=0;iarr.length;i++) result.push(arr[i][key]);
return result;
}
//diaoyong
var result = fun(arr,"treeId");
console.log(result);
樹形的數(shù)據(jù)結(jié)構(gòu)很固定,如果你不知道什么是樹,那就先去補補數(shù)據(jù)結(jié)構(gòu)吧。知道什么是樹了,就開始考慮ui,ui中每個樹節(jié)點應(yīng)當具有一個維持當前狀態(tài)的變量,這個狀態(tài)就是當前節(jié)點是展開的還是收縮的,并且要添加對應(yīng)的鼠標事件,以便切換節(jié)點的狀態(tài),單個節(jié)點處理完畢,就要考慮到子節(jié)點的問題,當一個節(jié)點因事件展開后,其所有子節(jié)點應(yīng)該按照原有順序顯示出來,首先為了保持樹形的ui特點,它們應(yīng)該是距離其父節(jié)點有一定距離的,然后,它們也應(yīng)當向其父節(jié)點一樣能夠在鼠標事件中切換狀態(tài)