Jquery $(this).val(); on .ready not working

时间:2013-06-21 11:10:22

标签: javascript jquery selected

我正在尝试获取下拉选项的值(在选择标记上有一个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();失败

3 个答案:

答案 0 :(得分:1)

正确的代码是:

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

答案 1 :(得分:1)

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

你可以直接使用像

这样的元素的值

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

答案 2 :(得分:0)

文档说.ready

  

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

以下3种可能的用例:

  • $(文件)。就绪(处理程序)
  • $()。ready(处理程序)(不建议这样做)
  • $(处理程序)

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

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

});

此代码被触发。 {strong 1}内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);
});