[РЕШЕНО] Зависимость select и checkbox'a
Всем привет и хорошего настроения. :)
Помогите, пожалуйста, разобраться с одной проблемой: есть скрипт следующего вида (jQuery пользуюсь 2-й день, так что поправьте, если код нубский): $(document).ready(function(){ $('#c_r').change(function(){ $('#edit-term-node-tid-depth-6 option:selected').each(function(e){$(this).removeAttr('selected');}); if (!$(this).is(':checked')){ $('#edit-term-node-tid-depth-6 option:first').attr('selected','selected'); } }); $('#f_a').change(function(){ $('#edit-term-node-tid-depth-3 option:selected').each(function(e){$(this).removeAttr('selected');}); if (!$(this).is(':checked')){ $('#edit-term-node-tid-depth-3 option:first').attr('selected','selected'); } }); $('#sec').change(function(){ $('#edit-term-node-tid-depth-7 option:selected').each(function(e){$(this).removeAttr('selected');}); if (!$(this).is(':checked')){ $('#edit-term-node-tid-depth-7 option:first').attr('selected','selected'); } }); $('#f_m').change(function(){ $('#edit-term-node-tid-depth-1 option:selected').each(function(e){$(this).removeAttr('selected');}); if (!$(this).is(':checked')){ $('#edit-term-node-tid-depth-1 option:first').attr('selected','selected'); } }); $('#f_s').change(function(){ $('#edit-term-node-tid-depth-5 option:selected').each(function(e){$(this).removeAttr('selected');}); if (!$(this).is(':checked')){ $('#edit-term-node-tid-depth-5 option:first').attr('selected','selected'); } }); $('#f_n').change(function(){ $('#edit-term-node-tid-depth-2 option:selected').each(function(e){$(this).removeAttr('selected');}); if (!$(this).is(':checked')){ $('#edit-term-node-tid-depth-2 option:first').attr('selected','selected'); } }); $('#edit-term-node-tid-depth-6').mouseup(function(evt){ evt = (evt) ? evt : event; var sel = $(this).find('option:selected'); if (sel.length){ $('#c_r').removeAttr('checked'); } else if (evt.ctrlKey) { $('#c_r').attr('checked','checked'); } }); $('#edit-term-node-tid-depth-3').mouseup(function(evt){ evt = (evt) ? evt : event; var sel = $(this).find('option:selected'); if (sel.length){ $('#f_a').removeAttr('checked'); } else if (evt.ctrlKey) { $('#f_a').attr('checked','checked'); } }); $('#edit-term-node-tid-depth-7').mouseup(function(evt){ evt = (evt) ? evt : event; var sel = $(this).find('option:selected'); if (sel.length){ $('#sec').removeAttr('checked'); } else if (evt.ctrlKey) { $('#sec').attr('checked','checked'); } }); $('#edit-term-node-tid-depth-1').mouseup(function(evt){ evt = (evt) ? evt : event; var sel = $(this).find('option:selected'); if (sel.length){ $('#f_m').removeAttr('checked'); } else if (evt.ctrlKey) { $('#f_m').attr('checked','checked'); } }); $('#edit-term-node-tid-depth-5').mouseup(function(evt){ evt = (evt) ? evt : event; var sel = $(this).find('option:selected'); if (sel.length){ $('#f_s').removeAttr('checked'); } else if (evt.ctrlKey) { $('#f_s').attr('checked','checked'); } }); $('#edit-term-node-tid-depth-2').mouseup(function(evt){ evt = (evt) ? evt : event; var sel = $(this).find('option:selected'); if (sel.length){ $('#f_n').removeAttr('checked'); } else if (evt.ctrlKey) { $('#f_n').attr('checked','checked'); } }); }); Суть проблемы в том, что скрипт отлично отрабатывает в Firefox 3.6.1.1, Google Chrome, Opera, а в IE8 не срабатывает можно сказать. Подскажете что можно предпринять? Скрипт должен выполнять следующее: Есть multiple селект, под ним есть чекбокс. Нужно, чтобы: - при щелчке на селект галочка в чекбоксе снималась. - Чтобы при нажатой клавише CTRL щелчке (для снятия выделенного элемента селекта) галочка возвращалась в чекбокс. - При снятии галочки с чекбокса выделялся первый элемент селекта. - При установке галочки в чекбокс - выделение в селекте снималось полностью. Ай нид хелп...:help: |
Решено путем замены change на click в первой части скрипта и замены mouseup на change во второй части скрипта.
|
1. $(document).ready(function(){}); можно использовать в более сокращенной нотации $(function(){});
2. evt = (evt) ? evt : event; - избавьтесь :blink: 3. #edit-term-node-tid-depth - можно один раз записать в переменную с более коротким именем идентификатор и писать только имя переменной var elem = $'(#edit-term-node-tid-depth'); а использовать в уже такой нотации: $(elem+i+'option:selected').... i - в данном случае выполняет итерацию Да и вообще, попытайтесь сократить код в несколько раз - это возможно |
Часовой пояс GMT +3, время: 01:29. |