Селектор jquery: идентификатор начинается с чего-то (ключевое слово "section" )
Я хочу настроить таргетинг на все div, у которых есть идентификатор, начинающийся с "section"; для каждого из этих divs я хочу показать дочерние divs ввода типа, которые начинаются с "pre".
//groups = $('div [id^=section]');
groups = $('[id^=section]');
$.each(groups, function(key, group) {
alert(key + ': ' + group);
//inputs = group.('[id^=pre]');
});
<div id="section-A1">
<input id="preBeginDtl" name="BeginDtlFields" value="" type="hidden">
<input id="other" name="name2" value="" type="input">
<input id="preGroup" name="GRP" value="AA" type="hidden">
</div>
Ответы
Ответ 1
Вместо поиска частичного идентификатора, возможно, вам следует добавить классы "section" и "pre" в divs? Затем вы можете выполнить поиск по
groups = $('div.section div.pre');
То, что вы делаете, это, по сути, поиск на основе классов, и это будет подходящий механизм.
Ответ 2
Это будет работать как селектор:
$('[id^=section] > [id^=pre]')
Но я не думаю, что вы можете изменить атрибут type для входных элементов. Вероятно, вы просто хотите установить "pre" входы как type = "text" (вместо type = "hidden" ) и установить для свойства css display значение none. Затем используйте jQuery show(), чтобы отобразить его.
<div id="section-A1">
<input id="preBeginDtl" name="BeginDtlFields" value="" type="text" style="display:none">
<input id="other" name="name2" value="" type="text">
<input id="preGroup" name="GRP" value="AA" type="text" style="display:none">
</div>
и
$('[id^=section] > [id^=pre]').show()
Ответ 3
groups = $('[id^=section]');
$.each(groups, function(key, group) {
inputs = $(group).children('[id^=pre]');
});