2

为什么我不能用附加 div 编辑颜色。

单击按钮并添加新的 div 调用'block2',如果使用 $(this),它将不起作用。如何解决?

HTML

<div id="btn"><input name="click" type="button" value="Click" /></div>
<div class="block1" style=" width:100px; height:100px; background:orange;">I am Block1</div>

JS

    $('#btn').click(function(){
        var $newDiv=$('<div class="block2" style=" width:100px; height:100px; background:green;">I am Block2</div>');
        $( "#btn").parent().append($newDiv);

    });

$('.block1').click(function(){
    $(this).css('background', 'blue');
});

$('.block2').click(function(){
    $(this).css('background', 'blue');
});
4

2 回答 2

3

工作演示 http://jsfiddle.net/e7Apx/

请注意,您正在附加元素,因此使用 API.on.block2$(document).on('click','.block2',function() { ... });

API:.on 文档-> http://api.jquery.com/on/

希望它适合原因:)

代码

$(function() {
    $('#btn').click(function() {
        var $newDiv = $('<div class="block2" style=" width:100px; height:100px; background:green;">I am Block2</div>');
        $("#btn").parent().append($newDiv);

    });

    $('.block1').click(function() {
        $(this).css('background', 'blue');
    });

    $(document).on('click','.block2',function() {
        $(this).css('background', 'blue');
    });
});​
于 2012-10-20T01:06:31.997 回答
1

它似乎在这里工作..

检查小提琴

对于 block2,您需要委托事件,因为它是动态添加的。

$('body').on('click','.block2' ,function() {
    $(this).css('background', 'blue');
});​

JS

$('#btn').click(function() {
    var $newDiv = $('<div class="block2" style=" width:100px; height:100px; background:green;">I am Block2</div>');
    $("#btn").parent().append($newDiv);

});

$('.block1').click(function() {
    $(this).css('background', 'blue');
});

$('body').on('click','.block2' ,function() {
    $(this).css('background', 'blue');
});​
于 2012-10-20T01:08:33.177 回答