Я использую Множественный выбор Select2
Нажав на x
Я хочу ID
в строке таблицы.
Это фрагмент кода, чтобы увидеть реальную проблему. https://jsfiddle.net/ja1omn9x/
Я использую этот код:
Но это дает мне undefined
Каким должен быть путь?
$(document).on('click', '.select2-selection__choice__remove', function(e) {
console.info("YES: ", $(this).closest('tr').attr('id'));
});
<script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<tr id = "row1">
<td data-select2-id = "4">
<select name = "product_id[]" class = "invoiceProducts">
<option value = "12" data-select2-id = "19">Orange</option>
<option value = "14" data-select2-id = "20">Apple</option>
</select>
<span class = "select2>
<span class = " selection ">
<span class = "select2-selection select2-selection--multiple ">
<ul class = "select2-selection__rendered ">
<li class = "select2-selection__choice " title = "Apple " data-select2-id = "23 ">
<span class = "select2-selection__choice__remove " role = "presentation ">×</span>Apple</li>
</ul>
</span>
</span>
<span class = "dropdown-wrapper " aria-hidden = "true ">
</span>
</span>
</td>
</tr>
добавил код.
Еще раз отредактировал. :-)
Смотрите мой обновленный ответ
Я также добавил jsfiddle, чтобы увидеть проблему.
Ваш JSFiddle не запускается, потому что вы загружаете jQuery слишком поздно, и на самом деле у вас не было .js-example-basic-multiple-limit
в вашем примере. смотри это
В чем проблема? Код работает. УЖАСНО, но работает здесь: jsfiddle.net/mplungjan/6ucr87d3
Кажется, что код select2 на самом деле не находится в DOM. Я не могу найти способ использовать jQUery, чтобы делать то, что вы хотите. Вам нужно посмотреть, может ли документация select2 помочь
Вы можете использовать select2:unselecting
, это будет вызываться всякий раз, когда вы нажимаете кнопку x
, тогда вы можете использовать .closest("tr").prop("id")
, чтобы получить идентификатор строки.
Демонстрационный код:
$(".js-example-basic-multiple-limit").select2({
maximumSelectionLength: 2
});
$('.js-example-basic-multiple-limit').on('select2:unselecting', function(e) {
console.info('I am in :)');
console.info("YES: ", $(this).closest('tr').prop('id'));
});
<link rel = "stylesheet" href = "https://cdn.jsdelivr.net/npm/select2@4.1.0-beta.1/dist/css/select2.min.css">
<script src = "https://code.jquery.com/jquery-3.5.0.js"></script>
<script src = "https://cdn.jsdelivr.net/npm/select2@4.1.0-beta.1/dist/js/select2.min.js"></script>
<table>
<tr id = "row1">
<td>
<select class = "form-control js-example-basic-multiple-limit" multiple = "multiple">
<option selected = "selected">orange</option>
<option>white</option>
<option selected = "selected">purple</option>
</select>
</td>
</tr>
<tr id = "row2">
<td>
<select class = "form-control js-example-basic-multiple-limit" multiple = "multiple">
<option selected = "selected">orange</option>
<option>white</option>
<option selected = "selected">purple</option>
</select>
</td>
</tr>
</table>
Пожалуйста, нажмите «Изменить», затем
[<>]
и предоставьте минимальный воспроизводимый пример с отрендеренным HTML, скриптом и фреймворками из CDN.