0

打开网页时,我正在尝试获取下拉选项的值(选择标记上有一个 id)

使用

$(document).ready(function() {

  $('#cat_list').ready(function(){
  var category =  $(this).val();
  alert(category);
  });

});

我得到一个空白警报。

但是使用 .change (在下拉菜单中选择其他内容时)以下代码与相同的功能完美配合

$(document).ready(function() {

  $('#cat_list').change(function(){
  var category =  $(this).val();
  alert(category);
  });

});

最后,这使用基本的javascript工作,它成功地获得了打开、刷新、表单提交失败等的值

$(document).ready(function() {

  $('#cat_list').ready(function(){
  var e = document.getElementById("cat_list");
  var category = e.options[e.selectedIndex].value; 
  alert(category);
  });

});

感谢您对为什么第一个版本 .ready + $(this).val(); 的任何帮助;失败

4

3 回答 3

1

正确的代码是:

$(document).ready(function () {
    var category = $('#cat_list').val();
    alert(category);
});
于 2013-06-21T11:16:57.183 回答
1

$(document).ready 本身意味着整个文档(包括#cat_list)已准备好进行处理。你为什么要检查一个元素是否准备好!!???

您可以直接使用元素的值,例如

$('#cat_list').val();

于 2013-06-21T11:20:03.020 回答
0

文档说.ready

指定当 DOM 完全加载时要执行的函数。

3个可能的用例是:

  • $(文档).ready(处理程序)
  • $().ready(handler) (不推荐)
  • $(处理程序)

但是,您实际上可以分配.ready给任何元素,它将被触发:

$('#cat_list').ready(function(){

});

此代码被触发。但是 this内部.ready函数总是指document.

它将以这种方式工作:

$(document).ready(function() {
  $('#cat_list').ready(function(){
      var category =  $('#cat_list').val();
      alert(category);
  });
});

但实际上你的代码是过度设计的:

$(document).ready(function() {
    var category =  $('#cat_list').val();
    alert(category);
});
于 2013-06-21T11:27:13.633 回答