Javascript 克隆主div后,面板颜色一次仅更改一次
在这里,我试图克隆一个Javascript 克隆主div后,面板颜色一次仅更改一次,javascript,jquery,html,css,Javascript,Jquery,Html,Css,在这里,我试图克隆一个为动态创建的元素使用委托单击事件,请查找下面的示例 我建议使用.on下面是.on函数的签名 $(document).on( eventName, selector, function(){} ); $("body").on("click", "#YOUR_DYNAMICALLY_CREATED_ELEMENT", function(event){ //Do Some stuff }); // Your case it would be like below $
为动态创建的元素使用委托单击事件,请查找下面的示例
我建议使用.on
下面是.on
函数的签名
$(document).on( eventName, selector, function(){} );
$("body").on("click", "#YOUR_DYNAMICALLY_CREATED_ELEMENT", function(event){
//Do Some stuff
});
// Your case it would be like below
$(document).on('click','.ChangeColor',function(){
$(this).parent('.main').css({backgroundColor: 'green'});
});
为动态创建的元素使用委托单击事件。请查找以下案例示例
我建议使用.on
下面是.on
函数的签名
$(document).on( eventName, selector, function(){} );
$("body").on("click", "#YOUR_DYNAMICALLY_CREATED_ELEMENT", function(event){
//Do Some stuff
});
// Your case it would be like below
$(document).on('click','.ChangeColor',function(){
$(this).parent('.main').css({backgroundColor: 'green'});
});
在创建节点之前,尝试添加事件
在创建节点之前,您尝试添加事件。使用eq(0)
添加。它仅克隆一个主元素。并使用更改更改颜色
单击功能。因为动态附加元素无法正常工作,请单击
$(文档).ready(函数(){
$('.clickButton')。单击(函数(){
$('.main').eq(0.clone().appendTo('.body');
});
$(文档).on('单击','.ChangeColor',函数(){
$(this).parent('.main').css({
背景颜色:“绿色”
});
});
});代码>
.main{
背景色:#000;
颜色:#fff;
字号:18px;
垫底:15px;
左侧填充:15px;
}
.内部{
填充:15px;
}
这是一个测试内容
变色
点击按钮
添加eq(0)
。它只克隆一个主元素。并更改ChangeColor
单击功能。因为动态附加元素不能正常工作,请单击
$(文档).ready(函数(){
$('.clickButton')。单击(函数(){
$('.main').eq(0.clone().appendTo('.body');
});
$(文档).on('单击','.ChangeColor',函数(){
$(this).parent('.main').css({
背景颜色:“绿色”
});
});
});代码>
.main{
背景色:#000;
颜色:#fff;
字号:18px;
垫底:15px;
左侧填充:15px;
}
.内部{
填充:15px;
}
这是一个测试内容
变色
点击按钮
由于您正在动态创建.main
元素,您使用的javascript代码将无法工作(因为这些元素尚未创建)&您需要使用“事件委派”方法使其工作
$('.body').on('click', '.ChangeColor', function() {
$(this).parent('.main').css({backgroundColor: 'green'});
});
说明:
您可以将“单击”事件处理程序直接绑定到动态创建元素(.ChangeColor
),而不是绑定到父元素(.body
或
或文档
)&查看新子元素的更改/添加
请阅读更多有关委派的信息
由于您正在动态创建.main
元素,因此您使用的javascript代码将无法工作(因为这些元素尚未创建)&您需要使用“事件委派”方法使其工作
$('.body').on('click', '.ChangeColor', function() {
$(this).parent('.main').css({backgroundColor: 'green'});
});
说明:
您可以将“单击”事件处理程序直接绑定到动态创建元素(.ChangeColor
),而不是绑定到父元素(.body
或
或文档
)&查看新子元素的更改/添加
请阅读更多有关委派的信息
这是因为.clone()
创建的元素不绑定处理程序
使用
要解决它,这是因为.clone()
创建的元素不绑定处理程序
使用
解决它
$('.clickButton').click(function(){
$('.main').clone().appendTo('.body');
$('.ChangeColor').click(function(){
$(this).parent(".main").css({backgroundColor: 'green'});
});
});
$('.body').on('click', '.ChangeColor', function() {
$(this).parent('.main').css({backgroundColor: 'green'});
});
$('.body').on('click', '.clickButton', function(){
$('.main').clone().appendTo('.body');
});