jQuery .change()不起作用

时间:2012-04-16 11:39:53

标签: jquery onchange

我有< 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。

2 个答案:

答案 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,等等)并查找此类错误,修复它,然后重试;)