javascript - 有没有办法使用 jquery 从属性中删除特定值?

标签 javascript jquery

我有一个显示产品的页面。在包围<ul>我有一些 jQuery 可以为属性添加值(例如 <ul id="products" subcategorynavids="someValue"> )。

当用户单击过滤链接时,jQuery 会检查 subcategorynavids 的内容然后只显示下面列出的具有 navid 的产品。

我遇到的问题是,当属性列出了多个值,并且用户第二次单击过滤器链接(以禁用它)时,我只需要删除被禁用的值。 ..

例如,如果页面设置为 <ul id="products" subcategorynavids="9007 8019 7365">然后用户单击启用/禁用 navid="8019" 的过滤器, 如何删除 '8019' 并保留 '9007' 和 '7365'?

我知道有 .removeAttr() , .removeProp() ,但那些只会完全删除属性(对吗?)。

我尝试了以下方法(正如预期的那样,没有用)...

$("#products").attr('subcategorynavids').remove('8019');

最佳答案

没有内置的 jQuery 方法可以做到这一点,您必须手动完成。

$('#products').attr('subcategorynavids', function (_, val) {
    return jQuery.grep(val.split(' '), function (val) {
        return val !== '8019';
    }).join(' ');
});

这里我们使用attr()的回调方式来更新一个属性。在函数内部,我们将当前值 val 除以 ' ',然后使用 jQuery'sgrep() 过滤结果数组中不是 8019 的值函数*,然后将数组重新连接在一起并将其返回为 subcategorynavids 的新值。

* 我想使用 Arrayfilter() 方法,但并非所有现代浏览器都支持它,因此您不妨使用 grep().

关于javascript - 有没有办法使用 jquery 从属性中删除特定值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13735809/

相关文章:

javascript - HTML 中动态添加的 (JQuery) 列表行中的链接不可单击

javascript - 使用 jQuery(插件?)的非 ajax GET/POST

javascript - 使用 jQuery 交换列表项

javascript - 获取存储在DOM中的多张图片的宽度

javascript - 将参数 onClick 传递给通过 refs 执行的 props.function()

jQuery 选择器问题(如何选择表单上除按钮和复选框之外的所有输入字段)

javascript - 在 JavaScript 中插入或更新对象

javascript - 如何在选项卡更改时停止 jquery js 功能?

javascript - 自动完成,自动更正在使用 cordova 或 javascript 的 android 4.4 中不起作用

javascript - 使用 CSS/jQuery 的 Angular 动画