0

我想在变量 idd 的选择元素中传递选定的值,然后再使用它。但它没有存储在变量中。我试图检查警报函数中的值,但甚至警报函数都没有被调用。

<script type="text/javascript" charset="utf-8">
    $(function(){
      $("select.ctlJob").change(function(){
        $.getJSON("select.php",{id: $(this).val(), ajax: 'true'}, function(j){
          var options = '';
          for (var i = 0; i < j.length; i++) {
            options += '<option value="' + j[i].optionValue + '">' + j[i].optionDisplay + '</option>';
          }
          var idd=$(this).val();
          //alert(idd);
          $('select#'+ idd).html(options);
        })
      })
    })
    </script>
4

3 回答 3

3

您无法获取该值,因为this您的上下文中没有引用select。您需要执行以下操作:

<script type="text/javascript" charset="utf-8">
$(function(){
  $("select.ctlJob").change(function(){
    var selectBox = $(this);
    $.getJSON("select.php",{id: $(this).val(), ajax: 'true'}, function(j){
      var options = '';
      for (var i = 0; i < j.length; i++) {
        options += '<option value="' + j[i].optionValue + '">' + j[i].optionDisplay + '</option>';
      }
      var idd=selectBox.val();
      //alert(idd);
      $('select#'+ idd).html(options);
    })
  })
})
</script>
于 2013-06-13T16:24:15.313 回答
1

试试这个 - (移出var idd=$(this).val();getJSON

<script type="text/javascript" charset="utf-8">
    $(function(){
      $("select.ctlJob").change(function(){
        var idd=$(this).val(); 
        $.getJSON("select.php",{id: $(this).val(), ajax: 'true'}, function(j){
          var options = '';
          for (var i = 0; i < j.length; i++) {
            options += '<option value="' + j[i].optionValue + '">' + j[i].optionDisplay + '</option>';
          }
          //alert(idd);
          $('select#'+ idd).html(options);
        })
      })
    })
</script>
于 2013-06-13T16:23:11.777 回答
0

这是一个范围问题,您只需要访问一次选定的值。此代码访问更改处理程序中的值,然后在 getJSON响应处理程序中使用它,这是一个子范围函数。所有子作用域的函数都可以访问它们的父作用域,这就是在响应处理函数中定义val的原因。

$(function(){
  $("select.ctlJob").change(function(){
    var val = $(this).val();    
    $.getJSON("select.php",{id: val, ajax: 'true'}, function(j){
      var options = '';
      for (var i = 0; i < j.length; i++) {
        options += '<option value="' + j[i].optionValue + '">' + j[i].optionDisplay + '</option>';
      }
      $('select#'+ val).html(options);
    });
  })
})
于 2013-06-13T16:32:01.683 回答