我有一個列表組,其中包含按鈕形式的列表組。我想爲每個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的處理程序都會運行。所以在刪除圖標處理程序之後,模式彈出。 –