我以前没有使用过 selectList,但是快速浏览和一些快速的 jsfiddle 工作(我借用了一个 selectList 示例)使它看起来像向 selectList 类添加委托事件处理程序ul应该能够处理它。
一个警告:最简单的选择方法是将 .delete 跨度放在适当的li. 就我个人而言,我认为它也是最接近语义正确的,因为删除“属于”那个特定li的 . 有几种不同的方法可以处理删除在外部的方法,li并且应该不难弄清楚,但这对我来说更快地达到工作演示:
var sl = $('select#simple-usage-select-1').selectList({
instance: true,
clickRemove: false,
onAdd: function (select, value, text) {
$('.selectlist-item').last().append('<span class="delete"></span>');
}
});
$('.selectlist-list').on('click', '.delete', function(event) {
sl.remove($(this).parent().data('value'));
});
基本上 selectList 有一个特定的remove(value)函数,然后删除元素并在列表中取消选择它,您只需要返回到您的 selectList 元素并使用要删除的项目的值调用该删除函数, selectList 通过数据存储() 作为值。
我也删除了你的insertAfter,因为它似乎完全没有必要。请注意函数中对“附加”的更改onAdd。如果您的 .delete 跨度必须位于以下而不是包含的元素中,则您将需要使用同级选择器或在创建跨度时将数据附加到跨度,或使用一些类似的方法。
注意:如果您正在动态创建选择列表,则需要将 附加.on到包含它们的东西上,并且可能将选择器更改为'.selectlist-item .delete'使其保持特定。