簡體   English   中英

節點內的可點擊按鈕

[英]Clickable buttons inside a node

TL; DR - 有沒有辦法在jsTree節點中有工作鏈接,而不使用JS重定向?


我想在jsTree節點中添加按鈕,如下所示:

在此輸入圖像描述

我用過這段代碼:

 $('#tree').jstree({ 'core': { 'multiple': false, 'themes': { 'responsive': false } } }); 
 /* custom */ body { font: 14px/14px "Lucida Sans Unicode", "Lucida Grande", sans-serif normal; } .actions a { background: #333; color: #ccc; font-size: 11px; line-height: 18px; border-radius: 4px; padding: 0 5px; text-decoration: none; } .actions a:hover { background: #999; } 
 <link href="https://cdnjs.cloudflare.com/ajax/libs/jstree/3.0.9/themes/default/style.min.css" rel="stylesheet"/> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> <script src="http://cdnjs.cloudflare.com/ajax/libs/jstree/3.0.1/jstree.min.js"></script> <div id="tree"> <ul> <li> <span class="content">Folder</span> <ul> <li> <span class="content">Subfolder</span> <ul> <li> <span class="content">File</span> <span class="actions"> <a href="/open">open</a> <a href="/delete">delete</a> </span> </li> </ul> </li> </ul> </li> </ul> </div> 

我的問題是jsTree在每個節點上創建<a>標簽(出於語義目的)並攔截每個click事件。 我自己的錨點應該打開一個新頁面,但現在沒有任何反應。

作者建議收聽changed.jstree事件,並自己完成工作:

$('#tree').on('changed.jstree', function (e, data) {
    document.location = data.instance.get_node(data.selected[0], true).a_attr.href;
}).jstree();

如果我想使用JS重定向,這個解決方案是完全可以接受的。 但我沒有。
目前,我編輯了jsTree源代碼以避免事件攔截( 你可以看看這個被拒絕的PR ),但是就像作者提到的那樣,這不是一個好方法。 所以這是我的最后一個問題:

有沒有辦法在jsTree節點中有工作鏈接,而不使用JS重定向?

我對任何建議持開放態度,我仍然可以用來捕獲/觸發事件,我的HTML標記可以重新組織。

你也可以試試這個:

$('#tree').on('ready.jstree', function () {
  $('#tree').off("click.jstree", ".jstree-anchor");
})

看看這里根據您的需要修改此插件,然后將其包含在您的頁面和plugins配置數組中。 您甚至可以修改它以包含錨點內的按鈕(此示例將它們包含在列表元素中),只需確保包含有效元素(例如,使用SPANI )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM