Jquery文件树 - 如何在文件夹点击时返回文件夹名称

时间:2010-10-22 21:09:29

标签: javascript jquery file treeview tree

我已经安装并尝试自定义Jquery文件树,以便在单击文件夹名称时,将文件夹名称和路径返回给调用函数。目前它只展开和折叠文件夹,并在点击文件时返回文件名。

所以我也需要返回文件夹,看不到它被触发的位置。

我正在使用php连接器。 下面的链接是我下载示例代码的地方: http://abeautifulsite.net/blog/2008/03/jquery-file-tree/

感谢, 编

2 个答案:

答案 0 :(得分:8)

不确定是否有“API”方式来执行此操作。但是如果你看一下源代码(第64-81行)

if( $(this).parent().hasClass('directory') ) {
    if( $(this).parent().hasClass('collapsed') ) {
        // Expand
        if( !o.multiFolder ) {
            $(this).parent().parent().find('UL').slideUp({ duration: o.collapseSpeed, easing: o.collapseEasing });
            $(this).parent().parent().find('LI.directory').removeClass('expanded').addClass('collapsed');
        }
        $(this).parent().find('UL').remove(); // cleanup
        showTree( $(this).parent(), escape($(this).attr('rel').match( /.*\// )) );
        $(this).parent().removeClass('collapsed').addClass('expanded');
    } else {
        // Collapse
        $(this).parent().find('UL').slideUp({ duration: o.collapseSpeed, easing: o.collapseEasing });
        $(this).parent().removeClass('expanded').addClass('collapsed');
    }
} else {
    h($(this).attr('rel'));
}

看起来你可以调用hasClass('directory') if子句中的另一个函数,它会起作用。

所以你可以:

将第36行更改为

fileTree: function(o, h, dire) {

在65到66之间添加

dire($(this).attr('rel'));

如果您想拥有更多控制/灵活性/信息,可以执行dire($(this));,它将发送jQuery对象而不仅仅是rel属性。

示例:

$(document).ready( function() {
    $('#container_id').fileTree({ root: '/some/folder/' }, function(file) {
        // do something when a file is clicked
    }, function(dir){
        // do something when a dir is clicked
    });
});

我没有测试过,你可能需要改变一些事情。

答案 1 :(得分:1)

它运作得很好,我只是将最后一个函数更改为“可怕”,就像是第65行和第66行之间的代码一样

        ... function(dire){
// do something when a dir is clicked
}