2

我有 <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:
  }
}

有人可以帮忙吗?谢谢。

4

2 回答 2

1

尝试如下调用它

$(document).ready(function() {

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

});
于 2012-04-16T11:50:31.060 回答
0

如果$(document).ready();不起作用,但$(window).load();确实如此,那么您之前的 DOM 中可能有(有...)一个错误。

当您使用多个$(document).ready();. 如果第一个发生错误,它可能会互相阻塞。这就是为什么您仍然可以使用$(window).load();.

对于接下来会遇到此问题的人:检查您的 JS 控制台(通过 Webkit 开发工具或 Firebug 等)并查找此类错误,修复它,然后重试;)

于 2012-08-28T16:08:27.247 回答