Я пишу некоторый код, который выделяет все <input type=radio />
в «радиогруппе» при изменении любого из них.
В обработчике события радио "change", я использую следующий код, чтобы найти все другие подобные радио:
radioHandler: function (event) {
var element = $(this);
var name = element.attr("name");
// Find all radios in the same group:
element.closest("form")
.find("input[type=radio][name='" + name + "']")
.each(function(){
... etc ...
});
},
Это прекрасно работает, если радио действительно содержатся в форме.
Тем не менее, я также хочу, чтобы он работал, если есть радио за пределами формы тоже.
Например, при условии, что все радиостанции используют один и тот же name
, следующее представляет 3 разные радиогруппы (и все браузеры ведут себя так):
o Radio A | o Radio B | o Radio C (Group - no form)
<form> o Radio D | o Radio E | o Radio F </form> (Group - form 1)
<form> o Radio G | o Radio H | o Radio I </form> (Group - form 2)
Если у меня есть элемент, какой лучший способ найти ТОЛЬКО радиостанции, которые являются частью его "группы"?
Кроме того, для бонусных баллов ... что делать, если элемент не является частью текущего документа - т.е. он содержится в другом «отдельном» контексте? Текущее решение работает нормально (потому что element.closest(...)
использует контекст элемента).