使用 onClick() 添加新的 div 到现有的 div
Adding new div into exist div with using onClick()
您好,我正在尝试通过单击 div 将新的 div 添加到存在的 div 中,我应该对新的 div 做同样的事情。例如,我有初始 div,当我单击它时,我在其中创建了不同的 div。然后我点击 new div 并在其中创建了 new div 。我希望解释是可以理解的 =) 这是我的代码,
<script type="text/javascript" src="js/jquery-1.4.2.min.js">
function run(id){
var id = $(id).attr("id");
document.getElementById(id).onclick = function () {
var div = document.createElement('div');
div.style.backgroundColor = "black";
div.style.position = "absolute";
div.style.left = "50px";
div.style.top = "50px";
div.style.height = "10px";
div.style.width = "10px";
document.getElementById(id).appendChild(div);
};
}
<style>
div.initial {
background-color:white;
width:400px;
height:30px;
}
</style>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<div class='initial' onclick='run(this)'>
//new div will come here
</div>
</body>
</html>
问题是我的 javascript 无法正常工作 当我使用此代码单击 div 时什么也没有。
这位先生:http://jsfiddle.net/leojavier/gbuLykdj/2/
<div class='initial'>
//new div will come here
</div>
JS
$('.initial').on('click',function(){
var template = "<div class='newDiv'></div>";
$('.initial').append(template);
})
CSS
div.initial {
background-color:white;
width:400px;
height:auto;
}
.newDiv{
width:20px;
height:20px;
background:blue;
margin:2px;
}
你所追求的基本想法。
function run (){
var div = document.createElement("div"); //create new div
div.addEventListener("click", run); //bind click to new div
this.appendChild(div); //append the new div to clicked div
this.removeEventListener("click", run); //remove the original click event
}
document.getElementById("start").addEventListener("click", run); //bind the initial click event
html, body { height: 100%; }
div {
border: 1px solid black;
width: 90%;
height: 90%;
}
<div id="start"></div>
当你调用函数运行时,传递的参数是一个对象javascript,而不是元素的id,你可以这样做
var id = $(id).attr("id");
哦,你用的是多么老的 jQuery 版本!! :( 您需要使用 jQuery .live()
方法来使用委托点击事件。您可能无法区分新的 div,因为 (1) 它们是绝对定位的 (2) 它们具有相同的位置背景颜色:
$('.initial').live('click', 'div', function(e) {
e.stopPropagation()
$('<div/>').css({
'background-color': 'black',
'position': 'absolute',
'left':'50px',
'top':'50px',
'height': '10px',
'width': '10px'
})
.appendTo( e.target );
});
$('.initial').live('click', 'div', function(e) {
e.stopPropagation();
var randomColor = ['black', 'red', 'yellow', 'blue', 'green', 'orange', 'gray'],
randomN = Math.round( Math.random() * (randomColor.length - 1) );
$('<div/>').css({
'background-color': randomColor[ randomN ],
'left':'25%',
'top':'25%',
'height': '60%',
'width': '15%'
})
.appendTo( e.target );
});
div.initial {
background-color:white;
width:400px;
height:30px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>
<div class='initial'>
click here:
</div>
您好,我正在尝试通过单击 div 将新的 div 添加到存在的 div 中,我应该对新的 div 做同样的事情。例如,我有初始 div,当我单击它时,我在其中创建了不同的 div。然后我点击 new div 并在其中创建了 new div 。我希望解释是可以理解的 =) 这是我的代码,
<script type="text/javascript" src="js/jquery-1.4.2.min.js">
function run(id){
var id = $(id).attr("id");
document.getElementById(id).onclick = function () {
var div = document.createElement('div');
div.style.backgroundColor = "black";
div.style.position = "absolute";
div.style.left = "50px";
div.style.top = "50px";
div.style.height = "10px";
div.style.width = "10px";
document.getElementById(id).appendChild(div);
};
}
<style>
div.initial {
background-color:white;
width:400px;
height:30px;
}
</style>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<div class='initial' onclick='run(this)'>
//new div will come here
</div>
</body>
</html>
问题是我的 javascript 无法正常工作 当我使用此代码单击 div 时什么也没有。
这位先生:http://jsfiddle.net/leojavier/gbuLykdj/2/
<div class='initial'>
//new div will come here
</div>
JS
$('.initial').on('click',function(){
var template = "<div class='newDiv'></div>";
$('.initial').append(template);
})
CSS
div.initial {
background-color:white;
width:400px;
height:auto;
}
.newDiv{
width:20px;
height:20px;
background:blue;
margin:2px;
}
你所追求的基本想法。
function run (){
var div = document.createElement("div"); //create new div
div.addEventListener("click", run); //bind click to new div
this.appendChild(div); //append the new div to clicked div
this.removeEventListener("click", run); //remove the original click event
}
document.getElementById("start").addEventListener("click", run); //bind the initial click event
html, body { height: 100%; }
div {
border: 1px solid black;
width: 90%;
height: 90%;
}
<div id="start"></div>
当你调用函数运行时,传递的参数是一个对象javascript,而不是元素的id,你可以这样做
var id = $(id).attr("id");
哦,你用的是多么老的 jQuery 版本!! :( 您需要使用 jQuery .live()
方法来使用委托点击事件。您可能无法区分新的 div,因为 (1) 它们是绝对定位的 (2) 它们具有相同的位置背景颜色:
$('.initial').live('click', 'div', function(e) {
e.stopPropagation()
$('<div/>').css({
'background-color': 'black',
'position': 'absolute',
'left':'50px',
'top':'50px',
'height': '10px',
'width': '10px'
})
.appendTo( e.target );
});
$('.initial').live('click', 'div', function(e) {
e.stopPropagation();
var randomColor = ['black', 'red', 'yellow', 'blue', 'green', 'orange', 'gray'],
randomN = Math.round( Math.random() * (randomColor.length - 1) );
$('<div/>').css({
'background-color': randomColor[ randomN ],
'left':'25%',
'top':'25%',
'height': '60%',
'width': '15%'
})
.appendTo( e.target );
});
div.initial {
background-color:white;
width:400px;
height:30px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>
<div class='initial'>
click here:
</div>