如何使用javascript从最近的li元素向pre标签添加id

时间:2015-12-11 12:12:44

标签: javascript jquery dom

我想在最近的pre标记li标记中为pre标记添加ID:

所以这就是我现在所拥有的:

<li id="12345">
   <pre class="code">
      <!-- some code goes here -->
   </pre>
</li>

它应该成为这个:

<li id="12345">
   <pre class="code" id="12345">
      <!-- some code goes here -->
   </pre>
</li>

5 个答案:

答案 0 :(得分:1)

具有data-id而非id:

的解决方案
$('pre').each(function(){
    $(this).attr('data-id', $(this).closest('li').attr('id'));
});

答案 1 :(得分:0)

元素id在dom中应该是唯一的。尝试附加一些字符串,使它像这样独特:

$(document).ready(function(){
    $('li').find('pre').attr('id', function(d){  return $(this).parent().attr('id')+'_pre';  });
});

答案 2 :(得分:0)

您可以尝试这样的事情:

(function() {
  var test = document.getElementById("test");
  var pre = test.getElementsByTagName("pre")[0];
  pre.id = "pre_" + test.id;
  console.log(pre)
})()
<div id="test">
  <ul>
    <li>
      <pre>Test Pre</pre>
    </li>
  </ul>
</div>

答案 3 :(得分:0)

试试这个:

 $(document).ready(function(){
        $('li').each(function(i)
        {
           var id = $(this).attr('id');
           $(this).find('pre').data('id',id);//for data-id
           $(this).find('pre').attr('id',id);//for id
        });
    });

答案 4 :(得分:0)

首先,id是唯一键,不能重复。 你最好添加Class not id。

但是,要回答您的问题,请尝试以下代码。

var x = document.getElementsByTagName('pre'); 
var y = x.parent;
x.setAttribute("id", y.id);