У меня есть несколько флажков:
<div class="abc">
<%= check_box_tag "closed" %>
<%= select_tag :time %>
</div>
<div class="abc">
<%= check_box_tag "closed" %>
<%= select_tag :time %>
</div>
<div class="abc">
<%= check_box_tag "closed" %>
<%= select_tag :time %>
</div>
<div class="abc">
<%= check_box_tag "closed" %>
<%= select_tag :time %>
</div>
Они имеют одинаковое имя и id #closed
Как это сделать, когда я нажимаю на флажок (например, последний флажок), он отключит последний select_tag?
Я попробовал что-то вроде этого:
$("#closed", this).change ->
alert("test")
$(this).closest(".abc").prop('disabled', true)
Пока это работает, только если я нажму первый флажок в DOM.
благодаря
.abc
- это <div>
. Используйте .next()
чтобы найти <select>
...
$("#closed", this).change ->
$(this).next("select").prop('disabled', true)
Как отмечали другие, наличие нескольких элементов с одним и тем же идентификатором является недопустимым HTML. Подумайте об этом.
Прежде всего, это не очень хорошая практика использования одного и того же id
для нескольких элементов в документе HTML. Но если вы уверены, что checkbox
и select
всегда находятся на одном уровне в документе, вы можете использовать siblings
чтобы получить выбор -
$("#closed", this).change ->
alert("test")
$(this).siblings(".abc").prop('disabled', true)
или, может быть
$("#closed", this).change ->
alert("test")
$(this).parent().find(".abc").prop('disabled', true)
closest
работает только в том случае, если искомый элемент является предком в дереве DOM, в противном случае - нет.
name
. Вы можете использовать класс вместо