Во-первых, ваш цикл for
является дублирующим элементом id
s.Атрибут id
должен быть уникальным, иначе любая операция фильтрации, включая присоединение слушателей, вернет только первый элемент, и ваши действия не будут работать.В моем примере я выбрал другой селектор.Вы могли бы обойтись без него, используя дубликаты в ваших выпадающих списках "options
" в качестве стандартных для value
, если вы не нацелены на них напрямую.
Тогда, так какЭто несколько строк, вам нужно найти, в какой из них выпадающий список, чтобы вы могли получить соответствующее значение.Вы можете сделать это, используя closest
и find
.
Также, если у вас много строк, вы должны рассмотреть возможность использования делегирование события , чтобы к вам подключалось меньше слушателей.Я использовал это решение.
Теперь, поскольку выпадающий список не является реальным select
, он не будет реагировать на события change
, поэтому я также предоставил свою собственную функцию выбора с использованием делегатов.Поскольку это якорь, вы не можете использовать псевдоселектор :selected
, вы должны проверить наличие атрибута.
$('table').on('click', '.btn-update', function(evt) {
$clicked = $(this).closest('tr').find('.dropdown-menu a[selected]')
console.log($clicked.text())
// You can get the emulated 'value' too
console.log($clicked.attr('id'))
// Cancel the 'button' default action
evt.preventDefault()
});
$('table').on('click', '.dropdown-menu', function(evt) {
// Find the 'selected' anchor inside this dropdown and remove the attribute
$(evt.currentTarget).find('a[selected]').removeAttr('selected')
// Add the attribute to the clicked one
$(evt.target).attr('selected', true)
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table class="table table-bordered">
<tbody>
<tr>
<td>
<div class="dropdown">
<button class="btn btn-secondary dropdown-toggle" type="button" id="dropdownMenuButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Select
</button>
<ul class="dropdown-menu" role="menu" id="options">
<li><a id="weekly">Option 1</a></li>
<li><a id="biweekly" selected>Option 2</a></li>
<li><a id="monthly">Option 3</a></li>
</ul>
</div>
</td>
<td>
<form data-toggle="validator" role="form">
<input type="submit" value="Update" class="btn btn-xs btn-block btn-update" id="update">
</form>
</td>
</tr>
<tr>
<td>
<div class="dropdown">
<button class="btn btn-secondary dropdown-toggle" type="button" id="dropdownMenuButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Select
</button>
<ul class="dropdown-menu" role="menu" id="options">
<li><a id="weekly" selected>Option 1</a></li>
<li><a id="biweekly">Option 2</a></li>
<li><a id="monthly">Option 3</a></li>
</ul>
</div>
</td>
<td>
<form data-toggle="validator" role="form">
<input type="submit" value="Update" class="btn btn-xs btn-block btn-update" id="update">
</form>
</td>
</tr>
</tbody>
</table>