我有< select>输入,这是其change
事件的代码:
$(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:
}
}
有人可以帮忙吗? THX。
答案 0 :(得分:1)
尝试按以下方式调用
$(document).ready(function() {
$("select[id $= 'Type']").change(function(){
// call the function you want with necessary parameters
});
});
答案 1 :(得分:0)
如果$(document).ready();
不起作用,但$(window).load();
不起作用,则您的DOM中可能有(之前有)错误。
当您使用多个$(document).ready();
时,通常会发生这种情况。如果第一个错误发生,它可能会阻塞所有其他错误。这就是为什么你仍然可以使用$(window).load();
。
对于有这个问题的下一个人:检查你的JS控制台(通过Webkit开发工具,或Firebug,等等)并查找此类错误,修复它,然后重试;)