我有一个列表组,其中包含按钮形式的列表组。我想为每个list-group-item添加可点击的图标,例如删除按钮。但是,向列表组项目添加图标时,我可以将图标添加到列表组项目或将其放在项目之前。当我添加图标时,它会显示为this。点击删除图标会触发整个list-group-item的click事件,而不是delete图标的click事件。引导列表组中的可点击按钮
的Javascript,我添加列表组项和删除图标(按钮):
var button = $('<button/>').text(result[key].deviceId).addClass('list-group-item device').attr({name:result[key].deviceId, "aria-label": "Quick View Device", "data-toggle": "modal", "data-target": "#quick-view-device-modal", type: "button"});
var deviceName = result[key].deviceId;
var deleteButton = $('<button/>').attr('type','button').attr('name','delete').attr('id',deviceName).html('<span class="glyphicon glyphicon-minus-sign red"></span>').addClass('icon delete-device');
button.prepend(deleteButton);
$('#device-list').append(button);
该代码最终加入列表组项按钮中删除图标按钮,作为一个孩子元件。我相信这就是为什么点击删除图标按钮会触发整个list-group-item的click事件。正因为如此,我尝试另一种方式:
JavaScript来添加列表组项目之前删除图标:
var button = $('<button/>').text(result[key].deviceId).addClass('list-group-item device').attr({name:result[key].deviceId, "aria-label": "Quick View Device", "data-toggle": "modal", "data-target": "#quick-view-device-modal", type: "button"});
var deviceName = result[key].deviceId;
var deleteButton = $('<button/>').attr('type','button').attr('name','delete').attr('id',deviceName).html('<span class="glyphicon glyphicon-minus-sign red"></span>').addClass('icon delete-device');
$('#device-list').append(button);
$('button[name='+deviceName+']').before(deleteButton);
$('.delete-device').hide();
当我每个列表组项前添加图标,它出来像this 。当我点击它时,图标不起作用。 首先,如果我添加像这样的删除图标,我将如何使图标与其对应的项目对齐?其次,为什么点击图标时点击事件不会被触发?
谢谢你,这个工作对我来说!然而,有一个问题,当我点击删除图标时,点击处理程序会运行两次。我想我会通过点击按钮后禁用按钮来解决这个问题,任何人都可以更好地解决这个问题? –
你是说在我的例子中?似乎无法看到。也许是因为当你为''loop'创建'deleteButton'时,你正在使用'var deleteButton = $('')',这是另一个按钮。我直接创建'span'元素。看看我的例子中的for循环。 – DavidDomain
只是注意到了,把它改成了像你这样的跨度。现在,click事件不会被触发两次,但是删除按钮和list-group-item的处理程序都会运行。所以在删除图标处理程序之后,模式弹出。 –