鉴于此标记:
<a data-foo="bar baz">Hello</a>
是否可以删除baz
,但保留bar
,理想情况下不删除两者,然后再添加bar
。
jQuery removeData
方法似乎删除了指定的数据属性或所有数据属性。
答案 0 :(得分:5)
你可以做到
$('a').data('foo', $('a').data('foo').split(' ')[0])
答案 1 :(得分:2)
我不确定这是你想要的,但这可能会有所帮助
首先获取data-foo值
var foo = $('a').data('foo')
将foo
字符串拆分为数组
var foos = []
foos = foo.split(" ")
选择要保留的项目(或删除要删除的项目)
var index = foos.indexOf("baz")
foos.splice(index,1)
将字符串放回到一起,只留下左边的字符
var foo = foos.join(" ")
将data-foo设置为新过滤的
$('a').data('foo',foo)
答案 2 :(得分:2)
假设数据是以空格分隔的字符串:
var data = $("a").data("foo");
data = (" " + data + " ").replace(" baz ", " ").replace(/^ | $/g, "");
$("a").data("foo", data);
这适用于foo baz
,baz foo
,foo baz bar
等。