javascript - jQuery如何过滤具有特定数据属性的元素

标签 javascript jquery

我有一个具有以下格式的表格:

<table data-type="costTable">
    <thead>...</thead>
    <tbody>
        <tr data-grouping='category' data-category='A'>...</tr>
        <tr data-grouping='subCategory' data-category='A'>...</tr>
        <tr data-grouping='subCategory' data-category='A'>...</tr>
        ...
        <tr data-grouping='category' data-category='B'>...</tr>
        <tr data-grouping='subCategory' data-category='B'>...</tr>
        <tr data-grouping='subCategory' data-category='B'>...</tr>
        ...            
    </tbody>
</table>

最初,我添加了 class='hidden'对所有子类别行使用 jQuery。当用户单击一个类别(例如类别 A)时,我想删除从其子类别中隐藏的类,例如a1、a2 和 a3。以下代码不起作用:

$(function () {

var categoryRows = $("table[data-type='costTable'] tr[data-grouping='category']");
var subCategoryRows = $("table[data-type='costTable'] tr[data-grouping='subCategory']");
var itemRows = $("table[data-type='costTable'] tr[data-grouping='item']");
var subItem = $("table[data-type='costTable'] tr[data-grouping='subItem']");

collapseInitial(subCategoryRows);
collapseInitial(itemRows);

if (subItem){
    collapseInitial(subItem);
}

// Toggle subCategory rows:
categoryRows.click( function(){
    // Clicking on the category rows should display their subcategory
    var categoryName = $(this).data('category');

    var targettedElements = subCategoryRows.filter("[data-category=categoryName]");
    toggleElement(targettedElements);

});

});

我在浏览器中进行了一些调试,问题出在以下行:

var targettedElements = subCategoryRows.filter("[data-category=categoryName]");

当单击类别行 A 时,它应该找到具有数据类别 A 的子类别行,但什么也没找到。请注意,当我检查 targettedElements 时,它显示

r.fn.init [prevObject: r.fn.init(30)]

我还尝试了 .has 函数而不是 .filter,但这不会对返回值造成任何改变。请注意,当我硬编码具有categoryName 的类别名称时,它确实返回正确的元素。因此,即使categoryName 在控制台中显示为字符串,它也不会被替换。知道如何解决这个问题吗?

最佳答案

这只是一个字符串,您没有将其用作变量。

.filter("[data-category=categoryName]");

基本字符串连接

.filter('[data-category="' + categoryName + '"]');

关于javascript - jQuery如何过滤具有特定数据属性的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58274752/

相关文章:

Javascript 强制加载标题

javascript - jquery选择具有相同id和不同属性的元素

jquery - caroufredsel 在浏览器调整大小之前不可见

javascript - 对象的构造函数属性的奇怪行为

javascript - 如何在跨域的iframe中获取父域名?

javascript - 如何使用CSS隐藏<select>菜单中的<option>?

javascript - 使用挖空绑定(bind)在网页中显示图像

javascript - 使用 JQuery 隐藏与按钮中的文本不匹配的表行

javascript - 等待 _app.js 加载,然后在 Next.js 上运行组件

javascript - 级联下拉菜单干扰自动完成文本框