gpt4 book ai didi

jQuery 不递归匹配 ID 的下一个 "row"

转载 作者:行者123 更新时间:2023-11-28 02:04:31 26 4
gpt4 key购买 nike

这有点奇怪,注意我无法更改 HTML,因为它是由 doxygen 生成的。

我正在尝试更改文件浏览器 javascript 的工作方式,目前如果您单击一个文件夹,它会完全展开它下面的所有文件夹。相反,我只想显示直接位于文件夹中的文件夹和文件。

HTML 类似于(此处为简单起见无效的 html)

<table>
<tr id="row_0" onclick="toggleFolder(0)">Folder1</tr>
<tr id="row_0_0" onclick="toggleFolder(0_0)">Project1</tr>
<tr id="row_0_0_0">File1.c</tr>
<tr id="row_1" onclick="toggleFolder(1)>Folder 2</tr>
</table>

代表这样的结构:

  • 文件夹 1
    • 项目 1
      • 文件1
  • 文件夹 2

目前 doxygen 的 javascript toggleFolder 函数像下面这样工作(我添加了注释来解释发生了什么)。

function toggleFolder(id)
{
var n = $('[id^=row_'+id+']'); //all rows "beneath" the clicked one
var i = $('[id^=img_'+id+']'); //img's in rows "beneath" clicked
var a = $('[id^=arr_'+id+']'); //a's in rows "beneath" clicked
var c = n.slice(1); //remove the first match (the clicked row)

//If the first element (reduce matches) is visible hide everything...
if (c.filter(':first').is(':visible')===true) {
i.attr('src','ftv2folderclosed.png'); //probably not needed
a.attr('src','ftv2pnode.png'); //probably not needed
c.hide();
} else {
i.attr('src','ftv2folderopen.png');
a.attr('src','ftv2mnode.png');
c.show();
}
updateStripes(); //update even/odd classes
}

相反,当我点击 row_0 而不是 row_0_0_0 时,我只想选择 row_0_0,如何更改选择器来实现它?

感谢您的宝贵时间!


最后我根据接受的答案使用了类似下面的东西

其中 rows 只是一个 $(tr) 等价物

  //Only match elements AFTER this one (can't hide elements before)
var childRows = rows.filter(function() {
re = new RegExp('^row_'+id+'\\d+_$', "i"); //only one sub
return this.id.match(re);
});

//All sub images
var childImages = childRows.find("img");

//Only the img images
var childImg = childImages.filter("[id^=img]");

//Only the arr images
var childArr = childImages.filter("[id^=arr]");

最佳答案

替换:

var n = $('[id^=row_'+id+']');

与:

var n = $("tr").filter(function() {
re = new RegExp('^row_'+id+'_\\d+$', "i");
return this.id.match(re);
});

equvialent 代码也适用于图像/ anchor (但我没有在您的问题中看到示例,因此无法编写正确的过滤器)。

关于jQuery 不递归匹配 ID 的下一个 "row",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12351650/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com