删除单击它的附加文本Jquery

时间:2014-08-14 01:28:07

标签: javascript jquery html css append

我正在尝试找到最简单,更清晰的方法来追加和删除附加的span,div或text。这是代码。可能有什么不对?

/* HTML CODE */
<div id="appendHere" style="padding:10px;border:solid 1px red"></div>

/* Jquery CODE */
$('#appendHere').live('click' , function() {
    $('#appendHere').append('<span style="padding:10px;border:solid 1px green;">Simple text</span>');
});

$('#appendHere span').live('click' , function() {
    $(this).remove();
});

3 个答案:

答案 0 :(得分:1)

DEMO

您可以尝试使用.toggle()

示例:

$('#appendHere').on('click' , function(e) {
 $('#appendHere span').toggle();
});

答案 1 :(得分:1)

取决于您使用的jQuery版本。您对.live()的使用可能是您的第一个问题。请改为.on()示例:

$(document).on('click', '#appendHere span', function(){$(this).remove();});

您也可以尝试类似

的内容
<style>
#addHere{padding:10px;border:solid 1px red;}
#addHere span{padding:10px;border:solid 1px green;}
</style>

<div id="appendHere" data-has_span="false"></div>
$(document).on('click', '#appendHere', function()
{
    $elem = $(this);
    if($elem.data('has_span') == "false")
    {
        $elem.prop('data-has_span', 'true').append('<span>Text here</span>');
    }
    else
    {
        $elem.prop('data-has_span', 'false').find('span').remove();
    }
});

答案 2 :(得分:1)

您最好不要使用live,而是尝试.bind().on()

问题是当您点击span时,点击了divtime

所以你可以尝试这样做:

$("appendHere").on("click", function(e) {
    if(!$(this).is($(e.target))) {
        return false;
    }
    $("<span>Text here</span>").appendTo($(this)).on("click", function() {
         $(this).remove();
    });
});