jQuery.change()不起作用
我有输入,这是其jQuery.change()不起作用,jquery,onchange,Jquery,Onchange,我有输入,这是其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("
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:
}
}
函数设置选项内容输入(类型、qno、ono){
开关(类型){
案例“”:
$(“.image\u option\u”+qno+“\u”+ono.attr('disabled','disabled');
$(“.image\u option\u”+qno+“\u”+ono.hide();
$(“.sound\u option”+qno+“+ono.attr('disabled','disabled');
$(“.sound\u option\u”+qno+“\u”+ono.hide();
$(“.text\u option\u”+qno+“\u”+ono).removeAttr('disabled');
$(“.text_option_u”+qno+“u”+ono).show(500);
$(“.text\u option\uu”+qno+“+ono).兄弟姐妹(“标签”).show(500);
打破
案例“”:
$(“.text\u option\uu”+qno+“\u”+ono.attr('disabled','disabled');
$(“.text\u option\uu”+qno+“\u”+ono.hide();
$(“.text\u option\u”+qno+“\u”+ono).slides(“label”).hide();
$(“.sound\u option”+qno+“+ono.attr('disabled','disabled');
$(“.sound\u option\u”+qno+“\u”+ono.hide();
$(“.image\u option\u”+qno+“\u”+ono).removeAttr('disabled');
$(“.image\u option\uu”+qno+“\uu”+ono).show(500);
打破
案例“”:
$(“.text\u option\uu”+qno+“\u”+ono.attr('disabled','disabled');
$(“.text\u option\uu”+qno+“\u”+ono.hide();
$(“.text\u option\u”+qno+“\u”+ono).slides(“label”).hide();
$(“.image\u option\u”+qno+“\u”+ono.attr('disabled','disabled');
$(“.image\u option\u”+qno+“\u”+ono.hide();
$(“.sound_option_u”+qno+“u”+ono).removeAttr('disabled');
$(“.sound_option_u”+qno+“u”+ono).show(500);
打破
违约:
}
}
有人能帮忙吗?Thx.试着按如下方式调用它
$(document).ready(function() {
$("select[id $= 'Type']").change(function(){
// call the function you want with necessary parameters
});
});
如果$(document).ready()代码>不起作用,但$(window.load()
do,您以前可能在DOM中有一个错误
当您使用多个$(document.ready()代码>。如果第一个错误发生,它可能会相互阻塞。这就是为什么您仍然可以使用$(window.load()代码>
对于下一个遇到此问题的人:检查JS控制台(通过Webkit开发工具或Firebug,无论什么),查找此类错误,修复它,然后重试;) 事件处理程序是否至少被调用?在调用.change()
之前是否绑定事件处理程序?还请说明“不工作”的含义。做一些调试,测试事件处理程序是否被调用,如果是,选择元素在那一刻有哪个值,等等…您好,我现在已经修复了它。我放置了$(“选择[id$='Type']);进入$(window).load(function(){}现在它可以工作了。我正在使用CakePHP和.image\u option\uu、.sound\u option\uu和text\u option\udiv在另一个文件(在CakePHP元素中)中。所以问题可能是,$(document).ready(function(){})不等待来自另一个文件的这些输入。对不起,我的英语:)这应该不是问题。。。输出作为一个整体创建,然后发送到浏览器。但也许陈述的顺序搞砸了。要么提供你的解决方案作为答案(一旦可以),并详细描述出错的原因(你应该确保找到实际原因),要么删除你的问题。