2012-07-22 26 views
2

我想围绕单击的元素创建一个div,而不会影响页面的样式,我需要在某些操作后删除插入的父项。有人有这样的想法吗?为选定的元素创建一个父div

编辑:请注意,我不希望使用任何JavaScript库

+0

Clicked元素是一个按钮? – 2012-07-22 14:20:01

+1

作为一个侧面说明。除非您控制CSS,否则您不能保证样式不会受到影响。例如,如果您有一种专门针对一组嵌套元素的样式,那么只要引入'div'来更改嵌套顺序,就不会应用这些样式。 – Nope 2012-07-22 14:23:09

+2

它被称为“包装”。 – pimvdb 2012-07-22 14:27:11

回答

5

我不能保证它不会影响样式,但至于其他的,尝试这样的事情(单击处理函数内):

var div = document.createElement("div"); 
var parent = this.parentNode; 
parent.insertBefore(div, this); 
div.appendChild(this); 

如果你还是在功能时你想删除新的div元素:

parent.insertBefore(this, div); 
parent.removeChild(div); 

如果不是,你需要重新获得它。假设你有一个触发器,并且this仍然是点击元素:

var div = this.parentNode; 
var parent = div.parentNode; 
parent.insertBefore(this, div); 
parent.removeChild(div); 
2

jQuery有一个wrap()功能,将你想要做什么。保证没有样式被改变是不可能的,但如果你控制页面和/或CSS,它不应该是一个问题。

相关问题