1

jstree_pre1.0_fix_1を使用しています。そして、事前に選択されたメニューが欲しいです。

javascriptは次のとおりです、

$("#Menu").jstree({ 
    "plugins" : [ "themes", "html_data", "ui"],
    "ui" :{ "initially_select" : ["#MENUITEM_012"] },
    "themes" : {
        "theme" : "custom",
        "dots" : false,
        "icons" : false,
    },
}).
bind("select_node.jstree", function(e,data) {
    window.location.href = data.rslt.obj.children("a").attr("href");
});

jstreeがロードされると、ノード(#MENUITEM_012)が選択され、次にwindow.location.hrefが変更され、次にjstreeがロードされてノードが再度選択されます。

どうすればこの状況から逃れることができますか。

4

2 に答える 2

1

ちょうど解決策を見つけました。この問題は、ライブラリがノードを選択しようとする (つまり、ナビゲートされたページがロードされた後にノードが選択されているように見えるようにする) ことが原因で発生します。また、ページを別のページにナビゲートするためにノードにアクセスしたときにハンドラーが設定されていました。

解決策は、ノードがマウス クリックで選択されていることを確認することです。

.bind("select_node.jstree", function(e,data) {
    var evt =  window.event || event;
    var button = evt.which || evt.button;
    if( button != 1 || ( typeof button == "undefined")) return true;

    window.location.href = data.rslt.obj.children("a").attr("href");
}) 
于 2014-07-11T14:12:36.760 に答える
0

自分自身に答えてください。

削除する

.bind("select_node.jstree", function(e,data) {
    window.location.href = data.rslt.obj.children("a").attr("href");
}) 

追加

$(".jstree li a").live("click", function(e) {
    window.location.href = $(this).attr("href");
});
于 2012-10-09T23:35:53.480 に答える