JQuery получить выбор параметров для массива - PullRequest
4 голосов
/ 29 июля 2010

Я застрял с одним - по-видимому, просто решить проблему.

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

В зависимости от атрибута «label», назначенного параметру «option», я хочу скрыть все другие элементы «div», классы которых совпадают с другими значениями «label» «options» в этом конкретном меню «select».

Позвольте мне продемонстрировать:

 <select class="sel_depend" id="reg_where_heard" name="where_heard">
    <option value="">Select one…</option>
    <option value="1">Google</option>
    <option value="2">Yahoo</option>
    <option value="3" label="where_heard_magazine">Magazine</option>
    <option value="4" label="where_heard_other">Other</option>
</select>

<div class="where_heard_magazine dn"><input type="text" name="magazine" id="magazine" value="" /></div>
<div class="where_heard_other dn"><input type="text" name="other" id="other" value="" /></div>

Теперь - классу "dn" в div под меню назначено просто "display: none".

В зависимости от выбранной опции - если ее значение равно 3 - я хочу, чтобы div с классом соответствовал метке, чтобы показать - тогда, если я выберу опцию со значением 4 - все остальные div (где имена классов будут заполняться из все опции этого элемента select) должны скрывать () и только выбранные show ().

Я не совсем уверен, как поместить все элементы "option" определенного элемента "select" в массив. Тогда, вероятно, я мог бы пройтись по нему с помощью оператора each () и выяснить, есть ли у них «метка», и если да, - скрыть элемент с классом, соответствующим его значению.

затем после цикла я мог бы показать элемент с классом, который соответствует значению параметра "label" выбранной "опции".

Надеюсь, это имеет смысл.

Есть идеи, как этого добиться?

Большое спасибо.

Ответы [ 2 ]

2 голосов
/ 29 июля 2010

дает все элементы div, относящиеся к определенному классу select, который является именем этого элемента.тогда вы можете сделать что-то вроде:

$('.sel_depend').change(function(){
    var class = $(this).attr('name');
    $('.' + class).hide();
    var divToShowClass = $(this).find(':selected').attr('label');
    $('.' + divtoShowClass).show();

});
0 голосов
/ 29 июля 2010
  $('.sel_depend').change(function() {
    var optionWithLabels = $('.sel_depend').children("option[label]");
    if($("option:selected", this).attr('label')) {
        optionWithLabels.each(function(){
            $('.' + $(this).attr('label')).hide();
        });
        $('.' + $("option:selected", this).attr('label')).show();
    }
  });
...