2013-06-21 51 views
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); 
    }); 

}); 

感谢您的帮助,为什么第一个版本。就绪+ $(本).VAL();失败

+0

你就不能使用$( '#cat_list'),而不是$(这)?只要你使用id就可以了。 –

+1

检查DOC:<< .ready()方法只能在匹配当前文档的jQuery对象上调用,因此可以省略选择器>> http://api.jquery。com/ready /在你的代码中,'this'是指文档 –

+0

你不需要为你的元素准备好''回调函数,因为你已经在使用它了'document' – sdespont

回答

1

正确的代码是:

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

谢谢大家 – mitt

1

$(文件)。就绪本身意味着整个说明书(包括#cat_list)准备被处理。你为什么要检查一个元素是否准备好了?

,你可以直接使用元素的值一样

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

0

文档说.ready

指定要执行时,DOM完全加载的功能。

而且3种可能的使用情况是:

    (文件)。就绪(处理)
  • $()准备就绪(处理器)(这是不推荐)
  • $
  • $(处理器)

但是你其实可以分配.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); 
}); 
+0

非常感谢您花时间帮助新手:),这有助于我了解自己做错了什么 – mitt