[英]How to change tag name of all html elements which is selected by class name? dynamically
[英]How to change class name of all elements without iteration?
我有这样的DOM结构:(使用jQuery)
<div class="test page-1">some code and more dom</div>
<div class="test page-2">some code and more dom</div>
<div class="test page-3">some code and more dom</div>
<div class="test page-4">some code and more dom</div>
<div class="test page-5">some code and more dom</div>
<div class="test page-6">some code and more dom</div>
<div class="test page-7">some code and more dom</div>
and few more ....
现在,我如何通过n (eg by 1)
增加page-1, page-2
等数字后缀类page-1, page-2
以便生成的类成为page-2, page-3
等?
即,只有page-1
的类数量会增加, page-1
类会变成page-2
一种方法是使用类test
迭代所有元素并删除类并添加新类。
有没有更好的方法来实现这一目标以获得更高的性能?
用例是我必须在div之间插入页面,以便插入的页面成为当前页面,之后页面的数字将增加1。
最简洁的答案是不。 即使你想为所有元素添加相同的类,循环也会隐藏在$('.test').addClass('myClass')
调用中。
您可以使用data-page
属性,使用jQuery的.data()
函数,或者不添加任何内容并使用$(this).index()
或循环计数器来获取页码:
$('.test').each(function(i) {
// i is the page number ...
});
// accessing the i-th element :
$('.test')[i];
试试这个:
$("[class*='page-']").each(function(){
var
newClass,
classParts,
currentClass = $(this).attr('class');
classParts = currentClass.split('-');
newClass = classParts[0] +'-'+ (parseInt(classParts[1])+1);
$(this).attr('class', newClass)
})
采用:
$(".test").each(function(index, element) {
var classes = $(this).attr("class");
var splitted = classes.split("-")[1];
classes = classes.replace(splitted,String(parseInt(splitted)+1));
$(this).removeAttr('class').addClass(classes);
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.