[英]dynamic creation of html elements using jquery
我需要一種解決此問題的方法。 live()
在我使用的jQuery 1.9中被刪除。 所以現在我不知道如何動態地將元素添加到文檔對象模型樹中。
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Trying dynamic adding</title>
<style>
body {
margin:10%;
}
#cool {
border:5px solid red;
}
.fool {
background-color:red;
width:100px;
height:100px;
border:1px solid green;
}
.lol {
background-color:yellow;
}
</style>
<script src="jquery.js"></script>
<script>
$(document).ready(function(){
alert("Application has been started");
$('#hool').addClass("lol");
$('#create').click(function(){
alert("Element created here");
var a=$('#cool');
b="<div class='fool'></div>";
a.append(b);
alert("Element created");
var c=$('.fool');
c.addClass("lol");
});
$('.lol').click(function(){
alert("New elements are good to go");
$('.lol').css("background-color","teal");
});
function hello(){
alert("welcome");
}
});
function hello(){
alert("welcome");
}
</script>
</head>
<body>
<section id=cool>
<button id=create> Create </button>
<button id=hool>Doubt</button>
</section>
</body>
</html>
在這段代碼中,問題是當我單擊帶有id create的按鈕時,它正在使用fool
類創建新的除法標記。 這僅適用於CSS,而不適用於JavaScript。 例如,具有id hool
按鈕和使用fool類創建的新除法標記將分配給另一個名為lol
類。 現在,當我單擊按鈕$('.lol').click(function)
時,該按鈕正在工作。 但是當我按下新創建的標簽時,它不執行該功能。 因為按鈕是在加載頁面時添加的,但是新的div標簽是使用append方法動態創建的。
現在請有人告訴我如何通過單擊新的div標簽來運行$('.lol').click(function)
。 我目前正在做一個項目,請幫忙。 歡迎所有答案。 提前致謝。
嘗試像使用on()一樣,
$('#cool').on('click','.lol',function(){
alert("New elements are good to go");
$(this).css("background-color","teal"); // use this in place of .lol again
});
當然,處理程序將不會綁定到該事件,因為當您試圖綁定該處理程序時該元素還不存在,因此解決方案是在創建該元素之后綁定處理程序,如下所示:
$('#create').click(function()
{
alert("Element created here");
var a=$('#cool');
b="<div class='fool'></div>";
a.append(b);
alert("Element created");
var c=$('.fool');
c.addClass("lol");
c.click(function()
{
alert("New elements are good to go");
$('.lol').css("background-color","teal");
});
});
我所做的是單擊#create時將bind事件直接綁定到創建的元素。
刪除此行:
$('.lol').click(function()
{
alert("New elements are good to go");
$('.lol').css("background-color","teal");
});
因為在創建新元素之后您已經綁定了處理程序。
問題在於,當您嘗試選擇.lol元素以將click事件監聽器附加到該元素時,該元素尚不存在。 您需要在它存在之后選擇它,或者在創建它的同一函數中選擇它,或者使用事件委托 。 若要使用事件委托, $('#cool').on('click', '.lol', function()
$('.lol').click(function()
更改$('#cool').on('click', '.lol', function()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.