如何在选择器ID中传递变量?

时间:2013-06-13 16:21:47

标签: javascript jquery

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

<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>

3 个答案:

答案 0 :(得分:3)

由于您的上下文中的this未引用选择,因此您无法获取该值。您需要执行以下操作:

<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>

答案 1 :(得分: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>

答案 2 :(得分:0)

这是一个范围问题,您只需要访问一次选定的值。此代码访问 change 处理程序中的值,然后在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);
    });
  })
})