0

我正在建造的计划是:您可以单击一个按钮来创建一些房屋,它们将被分配一个随机 ID。(我知道现在不是唯一的 ID)。

当您单击您创建的房屋之一时,您将能够看到有关房屋的一些信息和一个删除按钮:

$('.House').click(function(){
    var iDivHouseId = $(this).attr('id');
    var oHouse = findHouseId(iDivHouseId);
    $('#ShowId').text("ID: " + oHouse.getId());
    $('#ShowStreetName').text("Street name: " +oHouse.getStreetName());
    $('#ShowNumber').text("Number: " +oHouse.getNumber());
    $('#WindowDisplayPersonInfo').append('<input type="button" id="DeleteHouse" value="DELETE" />');
        $('#DeleteHouse').click(function () {
            $(?????).remove();   
        }); 
});

但正如标有问号的那样,我不知道我必须输入什么才能通过随机创建的 ID 删除房子。我可以添加类 .House,但随后所有房屋都将被删除。

// 另外,现在,当您单击房屋几次时,会显示几个删除按钮,因为它每次都会附加一个新按钮。如何用新按钮替换旧按钮,而不是每次都创建一个新按钮。

4

2 回答 2

0

我会将删除按钮设为静态标记,因此您不必多次附加它或绑定点击处理程序。然后,我将使用您的点击处理程序跟踪当前元素 iddata()并引用它。

$('.House').click(function(){
    var iDivHouseId = $(this).attr('id');
    $('#WindowDisplayPersonInfo').data('current-elem-id', iDivHouseId);
    var oHouse = findHouseId(iDivHouseId);
    $('#ShowId').text("ID: " + oHouse.getId());
    $('#ShowStreetName').text("Street name: " +oHouse.getStreetName());
    $('#ShowNumber').text("Number: " +oHouse.getNumber());
});

$('#DeleteHouse').click(function () {
    $('#' + $('#WindowDisplayPersonInfo').data('current-elem-id')).remove();   
}); 
于 2013-09-24T19:43:44.310 回答
0

通过 JSFiddle,如果您只想从右侧删除 div,您可以尝试删除单击事件的启动器。为了防止 js 中的“this”出错,因为它总是改变值,你可以在你的 click 函数中接收一个参数。

像这样的东西:

$('.House').click(function(e){
    var iDivHouseId = $(this).attr('id');
    var oHouse = findHouseId(iDivHouseId);
    $('#ShowId').text("ID: " + oHouse.getId());
    $('#ShowStreetName').text("Street name: " +oHouse.getStreetName());
    $('#ShowNumber').text("Number: " +oHouse.getNumber());
    $('#WindowDisplayPersonInfo').append('<input type="button" id="DeleteHouse" value="DELETE" />');
        $('#DeleteHouse').click(function () {
            $(oHouse).remove();   
            $(e.target).remove();
        }); 
});                  
});    
于 2013-09-24T19:43:57.743 回答