【发布时间】:2014-04-23 12:40:13
【问题描述】:
我的页面上有几个列表,请参见下面的示例
<div id="test1" class="testlist">
<ul>
<li title="test" data-view="0">Any</li>
<li title="test" data-view="101">list item 101</li>
<li title="test" data-view="102">list item 102</li>
<li title="test" data-view="103">list item 103</li>
<li title="test" data-view="104">list item 104</li>
<li title="test" data-view="105">list item 105</li>
<li title="test" data-view="106">list item 106</li>
<li title="test" data-view="107">list item 107</li>
<li title="test" data-view="108">list item 108</li>
<li title="test" data-view="109">list item 109</li>
</ul>
</div>
<div id="test2" class="testlist">
<ul>
<li title="test" data-view="0">Any</li>
<li title="test" data-view="101">list item 101</li>
<li title="test" data-view="102">list item 102</li>
<li title="test" data-view="103">list item 103</li>
<li title="test" data-view="104">list item 104</li>
<li title="test" data-view="105">list item 105</li>
<li title="test" data-view="106">list item 106</li>
<li title="test" data-view="107">list item 107</li>
<li title="test" data-view="108">list item 108</li>
<li title="test" data-view="109">list item 109</li>
</ul>
</div>
我希望 data-view 属性具有父 ID 的名称。
例如:在第一个列表中 data-view 应该被称为 data-viewtest1 而在第二个列表中它们应该是 data-viewtest2
我有以下js:
$("li").each(function () {
var id = $('.testlist').attr('id') || '';
console.log(id);
$(this).attr({
newData: $(this).attr('data-view'),
//data-view: $(this).attr('data-view'),
})
.removeAttr('data-view');
});
我可以替换属性 data-view 并将其命名为 newData 但如果我尝试将其重命名为 data-view
我收到语法错误
SyntaxError: missing : after property id
有没有办法重命名数据属性? 我希望它是:
data-view + id: $(this).attr('data-view'),
同样在 console.log 中我得到 20 个 test1 我应该得到 10 个 test1 和 10 个 test2,还有其他方法可以解决这个问题吗?
查看完整示例:
$("li").each(function() {
var id = $('.testlist').attr('id') || '';
console.log(id);
$(this).attr({
newData: $(this).attr('data-view'),
//data-view: $(this).attr('data-view'),
})
.removeAttr('data-view');
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="test1" class="testlist">
<ul>
<li title="test" data-view="0">Any</li>
<li title="test" data-view="101">list item 101</li>
<li title="test" data-view="102">list item 102</li>
<li title="test" data-view="103">list item 103</li>
<li title="test" data-view="104">list item 104</li>
<li title="test" data-view="105">list item 105</li>
<li title="test" data-view="106">list item 106</li>
<li title="test" data-view="107">list item 107</li>
<li title="test" data-view="108">list item 108</li>
<li title="test" data-view="109">list item 109</li>
</ul>
</div>
<div id="test2" class="testlist">
<ul>
<li title="test" data-view="0">Any</li>
<li title="test" data-view="101">list item 101</li>
<li title="test" data-view="102">list item 102</li>
<li title="test" data-view="103">list item 103</li>
<li title="test" data-view="104">list item 104</li>
<li title="test" data-view="105">list item 105</li>
<li title="test" data-view="106">list item 106</li>
<li title="test" data-view="107">list item 107</li>
<li title="test" data-view="108">list item 108</li>
<li title="test" data-view="109">list item 109</li>
</ul>
</div>
【问题讨论】:
-
即使看到你的 jsFiddle,我仍然不清楚你在找什么?!请注意,使用
$(selector).attr('id')只会返回第一个匹配的元素 ID -
您对属性的设置和删除没有多大意义。这里的最终游戏是什么?你想完成什么?
-
我刚刚更新了我的答案,以满足您设置新属性的需要。
-
是的,你可以通过 $(this).attr('data-view',NEW_Value)
标签: javascript jquery html attr custom-data-attribute