Селектор jquery: ID начинается с чего-то (ключевое слово "section") - PullRequest
18 голосов
/ 12 августа 2011

Я хочу настроить таргетинг на все div, у которых есть идентификатор, который начинается с «section»; для каждого из этих div я хочу показать дочерние div типа input, которые начинаются с «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>

Ответы [ 3 ]

41 голосов
/ 12 августа 2011

Это будет работать как селектор:

$('[id^=section] > [id^=pre]')

Но я не думаю, что вы можете изменить атрибут type для элементов ввода.Возможно, вы просто захотите установить входные данные pre как type = "text" (вместо type = "hidden") и установить для их свойства отображения css значение 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()
12 голосов
/ 12 августа 2011

Вместо того, чтобы искать частичный идентификатор, возможно, вам следует добавить классы "section" и "pre" в div?Затем вы можете выполнить поиск по

groups = $('div.section div.pre');

То, что вы делаете, - это, по сути, поиск на основе классов, и это будет подходящий механизм.

12 голосов
/ 12 августа 2011
groups = $('[id^=section]');    

$.each(groups, function(key, group) {
    inputs = $(group).children('[id^=pre]'); 
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...