[РЕШЕНО] Зависимость 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, время: 23:10. |