使用jquery将childs的属性和值复制到parent

时间:2014-08-04 09:13:24

标签: jquery

我有类似的东西

<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>

4 个答案:

答案 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');

DEMO

答案 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
});