зависимая видимость
Подскажите, как реализовать такое:
есть fiedlset, в нем поля - по умолчанию с display:none. Как сделать, чтобы если хотя бы одно поле стало видимым то и fieldset - тоже стал видимым иначе fielset - display:none; Заранее спасибо |
А видимость сама по себе, самопроизвольно переключается?
|
поля в fieldset становятся видимыми в зависимости от других полей-списков вне этого fielset. Но почему-то не хотелось бы завязывать на этом.
Возможно ли организовать событие которое срабатывает когда хотя бы одно поле внутри fieldset становиться видимым. Как это записать на jquery? |
$(anyElement).trigger('anyevent');
// ..
$(anyElement).on('anyevent', function() {
anyAction();
});
|
не совсем понимаю что в моем случае будет anyevent
|
if ($('anyElement:hidden').length) {
$('#fieldset').css({ 'display': 'none' });
} else {
$('#fieldset').css({ 'display': 'block' });
}
но не могу понять в какое событие это засунуть |
в моём случае всегда $('anyElement:hidden').length - false почему?
|
anyElement - это any element (любой элемент)
|
это понятно. Подскажите вот что:
if ($('anyElement:hidden').length) {... я так понимаю, что если элемент будет в display:none, то он будет в наборе, а lenght считает сколько их, и по нему можно определить скрывать или не скрывать. Почему у меня во всех случаях условие в if выполняется? даже когда нет скрытых? |
Цитата:
Вместо anyElement нужно подставить свой селектор :) |
danik.js,
Цитата:
|
Не стал новую тему заводить...
Есть вот такой вот массив: var krug = ["Фа","До","Соль","Ре","Ля","Ми","Си"]; Есть форма,в которой задается количество знаков и два переключателя- диез и бемоль. Как в зависимости от состояния переключателя вывести нужное количество нот? Например,переключатель стоит "диез" и 2 знака, Значит выводим сначала массива, то есть "Фа", "До". Если же положение "бемоль" и количество стоит тоже 2, то выводим"Си", "Ми". Последовательность именно такая. |
sotik,
:-?
function get(n,d)
{
var krug = ["Фа","До","Соль","Ре","Ля","Ми","Си"];
d == "бемоль" && krug.reverse();
return krug.splice(0, n)
}
alert(get(2));
alert(get(2, "бемоль"));
|
Спасибо большое.
Можно пояснить 4 и 5 строчку? Как я понимаю: Если d=="bemol", то переворачиваем массив,так? просто для меня несколько необычная форма условия. А в 5 сроке соединяем вроде как нужное кол-во элементов массива? Как грамотно сказать? |
sotik,
Цитата:
|
Хорошо.А как вернуть массив в исходное состояние в случае его переворачивания(после return конечно же) ?
|
Цитата:
|
Потому что в другой функции код работает с оригинальным массивом:
//Соответствие с тональностью
if(radios[2].value=="Не соотносить с апликатором"){
if(k>0){
if(krug.indexOf(alt)<k && radios[0].checked)valton++;
if(krug.indexOf(alt)>6-k && radios[1].checked)valton--;
}
}
Переменная alt - это элемент массива; Переменная k - количество знаков. |
sotik,
и как ваш код связан с моим? |
Очень просто.
В нашу функцию мы попадаем из формы когда меняем знаки,а из нее в функцию обработки ноты: Если знаки не меняются,то основная функция(обработки ноты) работает с исходным массивом krug.
var id = "e";
document.onclick = function( e ){
//Соответствие с тональностью
if(radios[2].value=="Не соотносить с апликатором"){
if(k>0){
if(krug.indexOf(alt)<k && radios[0].checked)valton++;
if(krug.indexOf(alt)>6-k && radios[1].checked)valton--;
}
}
}
//функция обработки знаков
...
document.getElementById(id).click();
|
Цитата:
|
Цитата:
рони, взял в арсенал :thanks: |
BETEPAH, на всякий случай
присвоение только надо оборачивать в скобки при такой записи a == s && (b = 1) |
| Часовой пояс GMT +3, время: 23:14. |