Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 克隆主div后,面板颜色一次仅更改一次_Javascript_Jquery_Html_Css - Fatal编程技术网

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');
});