2012-04-16 2 views
2

< У меня есть выбор > входа и это код для его change события:JQuery .Кнопки() не работает

$(document).on("change", "select[id $= 'Type']", function(){ 
    var id = $(this).attr('id'); 
    id = id.replace("Question", ""); 
    id = id.replace("Type", ""); 
    id = id.replace("Option", "###"); 
    var split = id.split("###"); 
    var qno = split[0]; 
    var ono = split[1]; 
    setOptionContentInput($(this).val(), qno, ono); 
}); 

Это отлично работает.

Но когда я вызываю код ниже внутри функции $(document).ready(), он не работает, и я не знаю почему.

$(document).ready(function() { 
    $("select[id $= 'Type']").change(); 
}); 

Вот setOptionContentInput() функция:

function setOptionContentInput(type, qno, ono){ 
    switch(type) { 
    case "<?php echo TEXT_OPTION; ?>": 
     $(".image_option_" + qno + "_" + ono).attr('disabled', 'disabled'); 
     $(".image_option_" + qno + "_" + ono).hide(); 
     $(".sound_option_" + qno + "_" + ono).attr('disabled', 'disabled'); 
     $(".sound_option_" + qno + "_" + ono).hide(); 
     $(".text_option_" + qno + "_" + ono).removeAttr('disabled'); 
     $(".text_option_" + qno + "_" + ono).show(500); 
     $(".text_option_" + qno + "_" + ono).siblings("label").show(500); 
     break; 

    case "<?php echo IMAGE_OPTION; ?>": 
     $(".text_option_" + qno + "_" + ono).attr('disabled', 'disabled'); 
     $(".text_option_" + qno + "_" + ono).hide(); 
     $(".text_option_" + qno + "_" + ono).siblings("label").hide(); 
     $(".sound_option_" + qno + "_" + ono).attr('disabled', 'disabled'); 
     $(".sound_option_" + qno + "_" + ono).hide(); 
     $(".image_option_" + qno + "_" + ono).removeAttr('disabled'); 
     $(".image_option_" + qno + "_" + ono).show(500); 
     break; 

    case "<?php echo SOUND_OPTION; ?>": 
     $(".text_option_" + qno + "_" + ono).attr('disabled', 'disabled'); 
     $(".text_option_" + qno + "_" + ono).hide(); 
     $(".text_option_" + qno + "_" + ono).siblings("label").hide(); 
     $(".image_option_" + qno + "_" + ono).attr('disabled', 'disabled'); 
     $(".image_option_" + qno + "_" + ono).hide(); 
     $(".sound_option_" + qno + "_" + ono).removeAttr('disabled'); 
     $(".sound_option_" + qno + "_" + ono).show(500); 
     break; 

    default: 
    } 
} 

Может кто-нибудь помочь? Спасибо.

+0

ли событие обработчик вызывается как минимум? Вы привязываете обработчик событий до *, вы называете '.change()'? Также укажите, что означает «не работает». Проведите некоторую отладку, проверьте, вызван ли обработчик события, если да, какое значение имеет элемент выбора в данный момент и т. Д. –

+0

привет, я уже исправил его прямо сейчас. Я поместил $ ("select [id $ = 'Тип']"). Change(); в функцию $ (window) .load (function() {}, и теперь она работает. Я использую CakePHP и .image_option_, .sound_option_ и text_option_ divs в другом файле (в элементе CakePHP). Таким образом, проблема была, вероятно, в том, что $ (document) .ready (function() {}) не ждет этих входов из другого файла. Извините за мой английский :) – Johny

+1

Это не должно быть проблемой ... вывод создается в целом и затем отправляется в браузер , Но, может быть, порядок выступлений перепутался. Либо предоставите свое решение в качестве ответа (как только сможете), так и подробно опишите, что пошло не так (вы должны убедиться, что вы выяснили фактическую причину) или удалить свой вопрос. –

ответ

1

попробуйте позвонить это следующим образом

$(document).ready(function() { 

    $("select[id $= 'Type']").change(function(){ 
     // call the function you want with necessary parameters 
    }); 

}); 
0

Если $(document).ready(); не работает, но $(window).load(); делать, вы, вероятно, есть (был ...) ошибки ранее в вашем DOM.

Это часто случается, когда вы используете несколько $(document).ready();. Если в первом случае возникает ошибка, это может блокировать все остальные. Вот почему вы все еще можете использовать $(window).load();.

Для следующих людей, которые будут иметь эту проблему: проверить ваш JS консоль (с помощью Webkit Девых инструментов или Firebug, что угодно) и искать такого рода ошибку, ремонтируют его, и повторите попытку;)

Смежные вопросы