jquery数据选择器

jquery数据选择器,jquery,jquery-selectors,Jquery,Jquery Selectors,我试图使用jquery数据选择器向元素添加/删除类 $("#side_categories .testbox").click(function () { var category = $(this).data('category'); //get the category from the clicked button if ($('#side_categories .testbox').hasClass('activated')) { //otherInput

我试图使用jquery数据选择器向元素添加/删除类

$("#side_categories .testbox").click(function () {
    var category = $(this).data('category'); //get the category from the clicked button

    if ($('#side_categories .testbox').hasClass('activated')) {
        //otherInput is the hidden text input
        $('#listings .deals:data("category"="+category+")').removeClass('activated');
    } else {
        $('#listings .deals:data("category"="+category+")').addClass('activated');
    }
});
在我的测试框中,我在每个触发器上设置了数据类别来传递它。进入数据类别的类别通过php填写

似乎无法实现此功能,出现了以下错误:

regular expression too complex
[Break On This Error] while (m = matcher.exec(expr)) { 
或者,当我使用james padolsey编写的旧函数时,我会得到以下结果:

uncaught exception: Syntax error, unrecognized expression: data
我只想能够根据复选框选择从LI的中添加/删除类


非常感谢

jQuery没有本机:数据选择器。您需要在$.expr[':'].data上显式定义它,或者使用一个插件将其添加为选择器。

jQuery没有本机:数据选择器。您需要在$.expr[':'].data上显式定义它,或者使用一个插件将其添加为选择器。

尝试在类别周围使用单引号而不是双引号,如下所示:

...
$('#listings .deals:data("category"='+category+')').removeClass('activated');
} else {
$('#listings .deals:data("category"='+category+')').addClass('activated');
...
如果这不起作用,请尝试添加和删除双引号的各种组合,例如:

...
$('#listings .deals:data(category="'+category+'")').removeClass('activated');
} else {
$('#listings .deals:data(category="'+category+'")').addClass('activated');
...

我不是jQuery选择器的专家,但您似乎试图在选择器中使用变量category,而不是字符串+category+,而您当前的代码没有这样做,因为选择器被单引号而不是双引号包围。

尝试在类别周围使用单引号而不是双引号,如下所示:

...
$('#listings .deals:data("category"='+category+')').removeClass('activated');
} else {
$('#listings .deals:data("category"='+category+')').addClass('activated');
...
如果这不起作用,请尝试添加和删除双引号的各种组合,例如:

...
$('#listings .deals:data(category="'+category+'")').removeClass('activated');
} else {
$('#listings .deals:data(category="'+category+'")').addClass('activated');
...

我不是jQuery选择器的专家,但您似乎试图在选择器中使用变量category,而不是字符串+category+,而您当前的代码没有这样做,因为选择器被单引号而不是双引号包围。

这样做,您就可以按数据值进行筛选:

工作代码:


Fiddle:

设置它,以便您可以根据数据值进行过滤:

工作代码:


小提琴手:

有什么东西喜欢这件作品吗

$("#side_categories .testbox").click(function () {
    var category = $(this).data('category'); //get the category from the clicked button
    $('#listings .deals[data-category*="' + category + '"]').toggleClass('activated');
}); 

你想换成这个工作吗

$("#side_categories .testbox").click(function () {
    var category = $(this).data('category'); //get the category from the clicked button
    $('#listings .deals[data-category*="' + category + '"]').toggleClass('activated');
}); 


您可以使用.filter选择它,查看我的答案。您可以使用.filter选择它,查看我的答案。据我所知,数据类别是.data api的一部分,它应该读取-categoryyes,但正如@zzzzBov所说的,因为没有:data选择器,上述解决方案将是一种替代方案:类似的建议出现在:YESSS!!!非常感谢。非常感谢大家的投入!到目前为止,这是几个小时不必要的头痛我一直在关注更新的函数/插件,但上面的代码成功了!:顺便说一句,通常会将解决您问题的建议解决方案标记为原始问题的答案:据我所知,数据类别是.data api的一部分,它应该读取-categoryy,但正如@zzbov所说,因为没有:data选择器,上述解决方案将是另一种选择:类似的建议出现在:YESSS!!!非常感谢。非常感谢大家的投入!到目前为止,这是几个小时不必要的头痛我一直在关注更新的函数/插件,但上面的代码成功了!:顺便说一句,习惯上会将解决您问题的建议解决方案标记为原始问题的答案:非常感谢!95%的人肯定这是我自己的错误,但我没能做到work@Mike-页面上有哪些错误?你能把你的代码放进一个演示吗?我没有收到任何错误,只是什么都没有发生。萤火虫也没有报告任何事情all@Mike我能看看你的代码样本吗?对于html,可能它没有选择正确的选项!非常感谢。看来我在这里没有足够的声望去投票。再次感谢大家!非常感谢!95%的人肯定这是我自己的错误,但我没能做到work@Mike-页面上有哪些错误?你能把你的代码放进一个演示吗?我没有收到任何错误,只是什么都没有发生。萤火虫也没有报告任何事情all@Mike我能看看你的代码样本吗?对于html,可能它没有选择正确的选项!非常感谢。看来我在这里没有足够的声望去投票。再次感谢大家!