bootstrap-treeview自定義雙擊事件實(shí)現(xiàn)方法
bootstrap-treeview是一款效果非??岬幕赽ootstrap的jQuery多級列表樹插件。該jQuery插件基于Twitter Bootstrap,以簡單和優(yōu)雅的方式來顯示一些繼承樹結(jié)構(gòu),如視圖樹、列表樹等等。但是不知為什么這個插件沒有自帶雙擊事件。
經(jīng)過多次測試,使用方法$('#tree').dblclick( function () {})和方法$('#tree').on('dblclick',function(){})都不起作用!百思不得其解。最后救助大神,問題解決了,但是好像不太優(yōu)雅但最終還是可以交差了。
這個解決方案中使用到了bootstrap-treeview自帶的兩個事件"nodeSelected"和"nodeUnselected".如果在treeview的節(jié)點(diǎn)上雙擊一定會觸發(fā)選中事件和取消選中事件,計(jì)算這兩個時間的時間間隔就可以模擬出雙擊事件的效果了。雙擊事件每次點(diǎn)擊鼠標(biāo)左鍵的間隔,人為操作300毫秒足夠。
具體代碼如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<link href="css/bootstrap.css" rel="stylesheet" />
</head>
<body>
<div id="tree" style="width: 400px;height: 1000px;margin-left: auto;margin-right: auto;"></div>
<div id="testDate"></div>
<script src="js/jquery.js"></script>
<script src="js/bootstrap-treeview.js"></script>
<script type="text/javascript">
//獲取樹形結(jié)構(gòu)列表數(shù)據(jù)
function getTree() {
var tree = [{
text: "Parent 1",
nodes: [{
text: "Child 1",
nodes: [{
text: "Grandchild 1"
}, {
text: "Grandchild 2"
}]
}, {
text: "Child 2"
}]
}, {
text: "Parent 2"
}, {
text: "Parent 3"
}, {
text: "Parent 4"
}, {
text: "Parent 5"
}];
return tree;
}
//初始化樹形結(jié)構(gòu)列表
$('#tree').treeview({
data: getTree()
});
//最后一次觸發(fā)節(jié)點(diǎn)Id
var lastSelectedNodeId = null;
//最后一次觸發(fā)時間
var lastSelectTime = null;
//自定義業(yè)務(wù)方法
function customBusiness(data){
alert("雙擊獲得節(jié)點(diǎn)名字: "+data.text);
}
function clickNode(event, data) {
if (lastSelectedNodeId && lastSelectTime) {
var time = new Date().getTime();
var t = time - lastSelectTime;
if (lastSelectedNodeId == data.nodeId && t < 300) {
customBusiness(data);
}
}
lastSelectedNodeId = data.nodeId;
lastSelectTime = new Date().getTime();
}
//自定義雙擊事件
function customDblClickFun(){
//節(jié)點(diǎn)選中時觸發(fā)
$('#tree').on('nodeSelected', function(event, data) {
clickNode(event, data)
});
//節(jié)點(diǎn)取消選中時觸發(fā)
$('#tree').on('nodeUnselected', function(event, data) {
clickNode(event, data)
});
}
$('#tree').dblclick( function () { alert("Hello World!"); });
$(document).ready(function() {
//customDblClickFun();
});
</script>
</body>
</html>
粗濾講解:
最主要的全局變量:lastSelectedNodeId,lastSelectedNodeId
最主要的方法:clickNode()
上面這個方法主要用來判斷選中事件和取消選中事件操作的目標(biāo)是否是一個且時間間隔是否足夠小。符合這兩個條件客戶就是想觸發(fā)雙擊事件??梢栽俸瘮?shù)customBusiness中自定義業(yè)務(wù)邏輯。
如果大家還想深入學(xué)習(xí),可以點(diǎn)擊這里進(jìn)行學(xué)習(xí),再為大家附兩個精彩的專題:Bootstrap學(xué)習(xí)教程 Bootstrap實(shí)戰(zhàn)教程
以上就是本文的詳細(xì)內(nèi)容,希望對大家的學(xué)習(xí)有所幫助。
- bootstrap treeview 擴(kuò)展addNode方法動態(tài)添加子節(jié)點(diǎn)的方法
- BootStrap TreeView使用實(shí)例詳解
- bootstrap插件treeview實(shí)現(xiàn)全選父節(jié)點(diǎn)下所有子節(jié)點(diǎn)和反選功能
- JS樹形菜單組件Bootstrap TreeView使用方法詳解
- 淺析使用BootStrap TreeView插件實(shí)現(xiàn)靈活配置快遞模板
- Bootstrap樹形菜單插件TreeView.js使用方法詳解
- 淺析BootStrap Treeview的簡單使用
- 基于MVC5和Bootstrap的jQuery TreeView樹形控件(二)之?dāng)?shù)據(jù)支持json字符串、list集合
- 基于MVC5和Bootstrap的jQuery TreeView樹形控件(一)之?dāng)?shù)據(jù)支持json字符串、list集合
- bootstrap-Treeview實(shí)現(xiàn)級聯(lián)勾選
相關(guān)文章
淺談javascript中l(wèi)odash與lodash-es的區(qū)別
本文主要介紹了javascript中l(wèi)odash與lodash-es的區(qū)別,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-10-10
純Javascript實(shí)現(xiàn)Windows 8 Metro風(fēng)格實(shí)現(xiàn)
Windows 8 Metro風(fēng)格設(shè)計(jì),實(shí)現(xiàn)網(wǎng)站或系統(tǒng)功能的導(dǎo)航,在本文將為大家介紹下如何用純Javascript實(shí)現(xiàn)Windows 8 Metro風(fēng)格,感興趣的朋友可以參考下2013-10-10
JS響應(yīng)鼠標(biāo)點(diǎn)擊實(shí)現(xiàn)兩個滑塊區(qū)間拖動效果
這篇文章主要介紹了JS實(shí)現(xiàn)的兩個滑塊區(qū)間拖動效果代碼,涉及JavaScript響應(yīng)鼠標(biāo)事件針對頁面元素的動態(tài)操作技巧,需要的朋友可以參考下2015-10-10
使用flutter創(chuàng)建可移動的stack小部件功能
本文主要介紹我為桌面和 Web 設(shè)計(jì)的一個超級秘密 Flutter 項(xiàng)目使用了畫布和可拖動節(jié)點(diǎn)界面。本教程將展示我如何使用堆棧來使用小部件完成可拖動功能,需要的朋友可以參考下2021-10-10
javascript 組合按鍵事件監(jiān)聽實(shí)現(xiàn)代碼
這篇文章主要介紹了javascript 組合按鍵事件監(jiān)聽實(shí)現(xiàn)代碼的相關(guān)資料,需要的朋友可以參考下2017-02-02
js實(shí)現(xiàn)addClass,removeClass,hasClass的函數(shù)代碼
js實(shí)現(xiàn)addClass,removeClass,hasClass的函數(shù)代碼,需要的朋友可以參考下。2011-07-07
uniapp小程序配置tabbar底部導(dǎo)航欄實(shí)戰(zhàn)指南
tabBar如果應(yīng)用是一個多tab應(yīng)用,可以通過tabBar配置項(xiàng)指定tab欄的表現(xiàn),以及tab切換時顯示的對應(yīng)頁,下面這篇文章主要給大家介紹了關(guān)于uniapp小程序配置tabbar底部導(dǎo)航欄的相關(guān)資料,需要的朋友可以參考下2022-09-09
原生js實(shí)現(xiàn)的觀察者和訂閱者模式簡單示例
這篇文章主要介紹了原生js實(shí)現(xiàn)的觀察者和訂閱者模式,結(jié)合簡單實(shí)例形式分析了js觀察者和訂閱者模式的相關(guān)原理與實(shí)現(xiàn)技巧,需要的朋友可以參考下2020-04-04
js實(shí)現(xiàn)拾色器插件(ColorPicker)
這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)拾色器插件ColorPicker,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2020-05-05

