javascript - 如何使用多个属性选择器但针对特定属性值?

标签 javascript jquery html jquery-selectors attributes

我正在使用 jQuery,并且我有以下 HTML 代码:

<a href="/link" data-a='{"one":"sample1","two":"sample2"}' data-b="true">Title</a>

我想通过使用 multiple attribute selectors 找到上面的链接但对于/带有 data-* 属性中包含的特定值。也就是说,我可以这样找到上面的链接

selector = 'a[data-a][data-b]'
$(selector).bind(...)

但我想通过查找具有 data-adata-b 属性及其属性 data-a 的链接来更具体包含 one 键。

我怎样才能做到这一点?

最佳答案

解析属性内容超出attribute selectors的范围。您需要通过 filtering 手动执行此操作所选元素:

$('a[data-a][data-b]').filter(function() {
    try {
        return "one" in JSON.parse($(this).attr("data-a"));
    } catch(e) {
        return false;
    }
}).on(…)

你当然可以implement a custom selector (或 use a regex selector 1),但这不会有太大区别。并且可能会显着降低性能。

1:呃,最好不要使用 JSON。

关于javascript - 如何使用多个属性选择器但针对特定属性值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24030466/

相关文章:

javascript - css 未应用于使用 jQuery .append() 创建的 html 元素

javascript - 工具提示中的图标

javascript - JavaScript switch 语句中的语法错误

javascript - 如何调试javascript错误?

javascript - jQuery 在带有属性的 li 元素之后插入

javascript - HTML 标记上的数据属性值被读取为数组而不是字符串

html - 防止 HTML5 日期字段在按键时触发更改事件

javascript - 多个自定义 HTML5 视频控件中的索引图标

javascript - 在 <embed> 标记上使用事件处理程序 - 其他选项?

JavaScript:使用或不使用 jQuery 更改 onclick 的值