我有类似的东西
<div>
<span id="1"></span>
</div>
<div>
<span id="2"></span>
</div>
<div>
<span id="3"></span>
</div>
我需要将每个范围的id放入其父div
结果应该是这样的
<div id="1">
<span></span>
</div>
<div id="2">
<span></span>
</div>
<div id="3">
<span></span>
</div>
答案 0 :(得分:2)
尝试以下
$("div span").each(function(){
$(this).parent().attr("id",$(this).attr("id"));
$(this).removeAttr('id');
});
答案 1 :(得分:1)
尝试使用.attr()
的接收器功能来完成您的任务,
$('div').attr('id',function(){
return $(this).children('span').attr('id');
}).children('span').removeAttr('id');
答案 2 :(得分:1)
最快的解决方案,使用直接DOM操作并避免在循环中使用jQuery:此外,从跨度本身而不是div开始使得更容易使用父级。
$('span[id]').each(function() { // only consider spans with an ID
var id = this.id; // get the original ID
this.id = null; // remove it from the span
this.parentNode.id = id; // and give it to its parent
});
这个可以严格地缩短一行(this.parentNode.id = this.id; this.id = null
),但是如果写的话,它确保ID一次从不在两个元素上。
答案 3 :(得分:0)
尝试:
$('div').each(function(item){ // loop all divs
var $span = $($(this).children('span')); // find the "span" tag inside "div", "this" in this context is "div" tag
$(this).attr('id', $span.attr('id')); // update id for "div" tag
$span.removeAttr('id'); // remove id of "span" tag
});