Я не думаю, что вам нужно связывание .click()
внутри связывания .change()
. Кроме того, вместо использования оповещения вы можете просто сделать эту опцию недоступной.
$("#add-user-code").click(function(){
$('#example').html('<span class="lbl">' + $('#keys option:selected').hide().text() + ' </span>');
$("#3rd-row").show();
$('#keys option:eq(0)').prop('selected', 'selected'); //set the select back to the blank option
});
Тогда, если вы нажмете кнопку удаления:
$('a').click(function() {
let example = $('#example .lbl').text().trim();
$('#keys option').filter(function() {return this.textContent === example; }).show();
$("#3rd-row").hide();
});
Вам не нужен массив или функциядобиться того, что вы после. https://jsfiddle.net/g9523ysz/
Если вам действительно нужно предупреждение:
$("#add-user-code").click(function(){
let option = $('#keys option:selected').text();
if (option) {
if ($('td').filter(function() { return $(this).find('.lbl').text().trim() === option; }).length){
alert('Duplicates not allowed.');
} else {
$("#3rd-row").show();
$('#example').html('<span class="lbl">' + option + ' </span>');
}
}
});
Я бы предложил, если вы можете, использовать более конкретный класс для диапазона, например lbl-user-code
. Тогда вместо того, чтобы проверять каждый td
, вы можете:
if ($('.lbl-user-code').filter(function() { return this.textContent === option; }).length) { ... }
https://jsfiddle.net/9us4d08j/