Как добавить div в уже существующий div
Возникла проблема при верстки. У меня такая ситуация:
<div class="taxonomy-images"> <a class="taxonomy-image-links" href="/artists/andrey"> Andrey </div> мне нужно Andrey обвернуть в свой див и задать ему свой class или id, что бы было так <div class="taxonomy-images"> <a class="taxonomy-image-links" href="/artists/andrey"> <div class="name"> Andrey </div> </div> Прошу помочь, смотрел это http://javascript.ru/forum/xhtml-htm...ozdat-div.html то что нужно только как поставить div который создался в то место, где мне нужно. |
varnava,
Если на jQuery достаточно легко - на чистом js - нун парсить по классу от ближайшего элемента с id |
Цитата:
|
varnava,
<div class="taxonomy-images"> <a class="taxonomy-image-links" href="/artists/andrey"> Andrey </a></div> <script> var a = document.getElementsByClassName("taxonomy-image-links")[0]; var div = document.createElement("div"); div.className = "name"; //или div.setAttribute("class", "name"); div.appendChild(document.createTextNode(a.innerHTML)); a.innerHTML = ""; a.appendChild(div); alert(document.getElementsByClassName("taxonomy-images")[0].innerHTML); </script> |
lord2kim сделал так, не работает
<style> .div_one { font-size: 22px; color: red; } </style> <script> var a = document.getElementsByClassName("taxonomy-image-links")[0]; var div = document.createElement("div"); div.className = "div_one"; // или div.setAttribute("class", "div_one"); div.appendChild(document.createTextNode(a.innerHTM L)); a.innerHTML = ""; a.appendChild(div); alert(document.getElementsByClassName("taxonomy-images")[0].innerHTML); </script> |
<style> .div_one { font-size: 22px; color: red; } </style> <div class="taxonomy-images"> <a class="taxonomy-image-links" href="/artists/andrey"> Andrey </a></div> <script> var a = document.getElementsByClassName("taxonomy-image-links")[0]; var div = document.createElement("div"); div.className = "div_one"; // или div.setAttribute("class", "div_one"); div.appendChild(document.createTextNode(a.innerHTML)); a.innerHTML = ""; a.appendChild(div); alert(document.getElementsByClassName("taxonomy-images")[0].innerHTML); </script> что бы работало в IE нужно реализовать метод getElementsByClassName(), который там отсутствует например // getElementsByClassName for IE if (typeof document.getElementsByClassName == 'undefined') { document.getElementsByClassName = function(classname) { var all = document.all, elements = [], regexpr = new RegExp('\\b'+classname+'\\b','ig'); for(var x=0; x<all.length; x++) if (all[x].className) if (all[x].className.search(regexpr)!=-1) elements[elements.length] = all[x]; return elements; } } |
<script type="text/javascript" src="http://yandex.st/jquery/1.4.4/jquery.min.js"></script> <style type="text/css"> div.name { background:#FFFF00; } </style> <div class="taxonomy-images"> <a class="taxonomy-image-links" href="/artists/andrey">Andrey</a> </div> <script type="text/javascript"> var elem=$(".taxonomy-images").find(".taxonomy-image-links"); elem.html('<div class="name">'+elem.html()+'</div>'); </script> |
<body> <style> .name { color:green; } </style> <div class="taxonomy-images"> <a class="taxonomy-image-links" href="/artists/andrey"> Andrey </a> </div> <script> window.onload = function () { var a = document.body.children[1].children[0]; alert(document.body.children[1].innerHTML); a.innerHTML = '<div class="name">' + a.innerHTML; alert(document.body.children[1].innerHTML); } </script> |
Столько вариантов и все некрасивые.=(
Если ноду можно не пересоздавать - ноду нужно не пересоздавать, а использовать. В этом смысл DOM. <!DOCTYPE HTML> <html> <head> <style> .name { color:green; } </style> <script> window.onload = function () { var d = document, div = d.createElement('div'), a = d.getElementsByClassName("taxonomy-image-links")[0], name = a.firstChild; div.className = 'name'; div.appendChild( a.replaceChild(div,name) ) alert(document.body.innerHTML); } </script> </head> <body> <div class="taxonomy-images"> <a class="taxonomy-image-links" href="/artists/andrey"> Andrey </a> </div> </body> </html> |
Цитата:
|
Часовой пояс GMT +3, время: 01:30. |