JqueryFileTree技术问题:如何获取最后一级文件夹路径而非文件路径
解决JqueryFileTree获取最后一级文件夹路径的问题
首先,你遇到的dire is not a function错误大概率是参考代码里的方法名拼写错误,或是你使用的JqueryFileTree版本和参考内容的版本不兼容导致方法不存在。结合你已经在PHP端隐藏了文件列表的前提,我给你两种可靠的实现方式:
方法一:利用插件自带的回调函数
在初始化JqueryFileTree时,通过回调函数直接获取文件夹路径并提取最后一级:
$(document).ready(function() { // 初始化文件树 $('#your-file-tree-container').fileTree({ root: '/your-root-folder/', // 替换成你的根路径 script: '/path/to/your-handler.php', // 你已经修改好的PHP处理脚本 multiFolder: false // 可选,是否允许多选文件夹 }, function(selectedPath, isFolder) { // 因为你已经隐藏了文件,所以isFolder肯定为true if (isFolder) { // 提取最后一级文件夹名称 const lastFolderName = selectedPath.split('/').filter(Boolean).pop(); // 如果需要完整的最后一级文件夹路径(即整个选中的路径),直接用selectedPath即可 console.log('最后一级文件夹完整路径:', selectedPath); console.log('最后一级文件夹名称:', lastFolderName); // 这里可以把结果赋值给输入框或者做其他业务处理 // $('#target-input').val(selectedPath); } }); });
方法二:直接绑定文件夹的点击事件
如果插件的回调参数不符合预期,也可以直接通过DOM事件绑定来获取路径:
$(document).ready(function() { // 先初始化文件树 $('#your-file-tree-container').fileTree({ root: '/your-root-folder/', script: '/path/to/your-handler.php' }); // 绑定文件夹点击事件 $('#your-file-tree-container').on('click', '.jqueryFileTree-folder', function() { // 从文件夹的链接中获取路径(插件默认把路径存在rel属性里) const folderPath = $(this).find('a').attr('rel'); // 处理最后一级 const lastFolderName = folderPath.split('/').filter(Boolean).pop(); console.log('最后一级文件夹完整路径:', folderPath); console.log('最后一级文件夹名称:', lastFolderName); }); });
注意事项
- 确认你的PHP脚本返回的结果中只有文件夹数据,没有文件,这样所有点击的元素都是文件夹,无需额外判断
- 不同版本的JqueryFileTree的DOM类名可能略有差异,如果
.jqueryFileTree-folder不生效,可以打开浏览器开发者工具查看文件夹元素的实际类名 - 路径分割时用
filter(Boolean)是为了避免路径首尾的斜杠导致出现空字符串的情况
内容的提问来源于stack exchange,提问作者Captain Harlock
相关产品推荐
相关产品推荐

