如何替换data- attribute中的特定字符串单词?

时间:2016-05-12 07:43:17

标签: javascript jquery

我使用一个脚本来添加元素类名的动态数据属性值 - 第二部分是我要修剪数据属性中的值。

html的例子:

<div class="newgroup HardDrivesExternal" data-item-tags="newgroup HardDrivesExternal show"></div>

<div class="newgroup ServiceSuppor" data-item-tags="newgroup ServiceSupport"></div>

我希望它看起来像这样:

 <div class="newgroup HardDrivesExternal" data-item-tags="HardDrivesExternal"></div>

<div class="newgroup ServiceSuppor" data-item-tags="ServiceSupport"></div>

在示例中,我想删除数据值中的第一个和第三个单词 - 我无法将其从元素类中删除,因此我需要从data属性中执行此操作。此外 - 中间词动态变化,所以我想定位特定的单词 - newgroup和show。更糟糕的是,show这个词并不总是一个值。

什么是替换价值特定部分的最佳方式?

2 个答案:

答案 0 :(得分:2)

正如我所评论的那样,您可以使用split来获取单词数组,并使用array.splice()来获取第二个单词。

注意:我使用了.attr进行设置,因为.data(key, val)无效。 Related post。我还更新了元素的文本,以显示价值。

(function() {
  $.each($(".newgroup"), function(i, el){
    var attr = "item-tags";
    var val = $(el).data(attr).split(" ").splice(1,1)[0];
    $(el).attr("data-" + attr, val);
  })
})()
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<div class="newgroup HardDrivesExternal" data-item-tags="newgroup HardDrivesExternal show">test1 </div>

<div class="newgroup ServiceSuppor" data-item-tags="newgroup ServiceSupport"> test2</div>

答案 1 :(得分:1)

您可以使用split()

$(document).ready(function() {
    var data = $('.HardDrivesExternal').attr('data-item-tags');
    var newdata = data.split(" ");
    newdata.shift();
    newdata.shift();
    alert(newdata.join(" "));
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<div class="newgroup HardDrivesExternal" data-item-tags="newgroup ServiceSupport show anotherTag"></div>