Я пытаюсь добавить пользовательские события кликов к значкам, которые я встроил в обработчик select2. Вместо того, чтобы иметь значение по умолчанию «x», я добавил три значка символов, которые я хотел бы присоединить к пользовательским обработчикам кликов, и предпринять действия, используя API событий select2 оттуда.jQuery select2 не может добавить событие click к настраиваемому шаблону
Похоже, это работает, если я нажимаю на фактический тег, но не на отдельных значках, как мне бы хотелось.
My JavaScript выглядит следующим образом:
$(document).ready(function() {
function formatPattern(p)
{
if (!p.id) return p.text;
var html;
html = '<div class="action-group">';
html += '<a href="#" class="glyphicon glyphicon-remove"></a>';
html += '<a href="#" class="glyphicon glyphicon-play"></a>';
html += '<a href="#" class="glyphicon glyphicon-pause"></a>';
html += '</div>';
html += '<div class="select-text">' + p.id + '</div>';
return html;
}
var tagBox = $('#tagPicker');
tagBox.select2({
tags: ['A', 'B', 'C'],
closeOnSelect: false,
formatResult: formatPattern,
formatSelection: formatPattern,
escapeMarkup: function(m) { return m; }
});
tagBox = tagBox.data('select2');
tagBox.selectChoice = (function(fn) {
return function(data, options) {
var target;
console.log(data);
console.log(options);
if (options != null) {
target = $(options.target);
}
if (target && target.hasClass('glyphicon-play')) {
console.log(" clicked play button ");
} else {
return fn.apply(this, arguments);
}
}
})(tagBox.selectChoice);
});
Вот jsfiddle: https://jsfiddle.net/Lwda44q5/
Выглядит хорошо, только ошибка с этим в том, что при добавлении нового тега, обработчик события клика не присоединяется к нему. Я думал, что 'on()' был построен для этого, но что-то не работает. – randombits
, для этого вам нужно объявить обработчик как: $ (document) .on ("click", ". Action-group a", function() {}) ;. Это зарегистрировало бы любые созданные динамические элементы. – DinoMyte
определенно пробовал это - пытаясь понять, почему он не работает. – randombits