寫在前面的話:
最近有個需求是為Ztree的圖標添加點擊事件,心想這好辦呀,讀讀Ztree的官方文檔一定會有相應的圖標點擊事件的,於是我打開了Ztree的官網 ,找了好久沒有直接針對圖標的點擊事件,我的三千煩惱絲又要開始掉了。
解決辦法:
好在我相信一個道理:“只要思想不滑坡,辦法總比困難多!”,既然沒有直接的點擊事件那還有間接的點擊事件,如:onClick,onMouseDown,onMouseUp等,他們都帶有三個參數:event(標准的js event對象),treeId(對應ZTree的treeId),treeNode(被點擊的結點JSON數據對象)。對於點擊圖標還是點擊結點名稱可以用event對象來判斷,根據我的實踐得出event.target.id 保存了被點擊對象的idztree 結點的id圖標默認寫法是:TreeId+數字編號+“_ico”,而文字是:TreeId+數字編號+“_span”,復選框是:TreeId+數字編號+“_check”。
那么知道以上的信息就好辦了,在隨便一個有包含event參數的CallBack點擊事件中 對event.target.id 進行判斷如果id有包含“_ico”的話就是在圖標上觸發的點擊事件。就可以在判斷成功之后寫點擊圖標的事件了。
最后:
附上Demo代碼:
onMouseDown: function (event, treeId, treeNode) {
if (event.target.id && event.target.id.lastIndexOf("_ico") > -1) {
//寫你的圖標點擊事件代碼
}
}