.append()的反转(删除元素)

时间:2013-12-22 12:37:26

标签: jquery

我有一些带有id和“结果框”的按钮,在按下任何按钮时,我的jquery代码会获取按钮ID并将其放在结果框中。
其中一个按钮是“删除”按钮,此按钮应使用代码$("#resultbox").remove( x );删除最后放置的ID但不是 这是我的代码:

$( "button" ).click(function() {
    x = event.target.id; //takes the id of the button
    switch (x)
    {
    case "del":
        **$("#resultbox").remove( x ); //here it should delete last placed id but it doesn't work**
        break;
    default:
        $( "#resultbox" ).append( x );
        break;
    }
});

5 个答案:

答案 0 :(得分:1)

什么是event

您应该指定为参数:

$( "button" ).click(function(event) {

检查jQuery click documentation

  

处理程序(eventObject)传递

     

类型:功能()

     

每次触发事件时执行的功能。

此外,您只是按文字添加元素,因此您可以像这样删除:

$( "button" ).click(function(event) {
    var id = this.id; // the actual button
    switch (id)
    {
        case "del":
            var text = $("#resultbox").text();
            if (text.length >= 1)
            {
                text = text.substring(0, text.length - 1);
                $("#resultbox").text(text);
            }
            break;
        default:
            $( "#resultbox" ).append(id);
            break;
    }
});

Example on jsFiddle

答案 1 :(得分:1)

如果您必须删除id的后代,则需要在#的选择参数中为remove()添加前缀#resultbox

$("#resultbox").remove( "#"+ x ); 

由于元素的id应该是唯一的,你可以直接删除元素

$("#"+ x).remove();
根据评论和现场演示

修改

<强> Live Demo

$( "button" ).click(function() {
    x = this.id;    
    switch (x)
    {
    case "del":
        text = $("#resultbox").text( )
        $("#resultbox").text(text.substring(0,text.length-1)); 
        break;
    default:
        $( "#resultbox" ).append( x );
        break;
    }
});

答案 2 :(得分:1)

这是适合您的工作计算器..

你严重搞砸了id选择器代码。我试过改进它..

<强> http://jsfiddle.net/w2kG6/3/

$( "button" ).click(function() {
    var _self = $(this);
    var _attr = _self.attr('id');

    console.log(_attr);
    switch (_attr)
    {
    case "del":
        var str = $("#resultbox").text();
        if($("#resultbox").length > 0)
            $("#resultbox").html(str.substring(0,str.length - 1))
        break;
    default:
        $( "#resultbox" ).append( _attr );
        break;
    }
});

答案 3 :(得分:0)

我想你想这样做:

$('#result').last().remove();

这将获取容器中的最后一个元素并将其删除..

答案 4 :(得分:0)

它不像这样工作。 X是您要附加的内容的副本,而不是附加的元素本身。至于那个,$ ...... append将返回一个刚刚创建的对象。如果将此对象提供给remove语句,它将按预期工作。