首页 > 技术文章 > jQuery 事件——关于Select选中

xxxholicl 2017-03-25 11:28 原文

场景:

  eg:在管理一篇博文时,因博文的管理有一列叫:状态的列,该列有诸多状态,如:正常,待审核,删除等...  此时,若使用Select下拉列表进行状态选择,并在选中具体项值后,通过Ajax异步提交,在效果及体验上就能得到更大化的体验。 


下拉列表例子如下:

 

1 <select id="status">
2     <option value="0" >待审核</option>
3     <option value="1" >未通过审核</option>
4     <option value="2" >制作中</option>
5     <option value="3">制作完成</option>
6     <option value="4" >发布</option>
7     <option value="5">暂停</option>
8     <option value="6">删除</option>
9 </select>    

 

错误示范:

 

1 $("select#status").click(function(){
2     console.log($(this).val());
3 });

 

若通过click事件执行,则在点击下拉列表的首次便会触发一次Ajax请求,这样并不符合逻辑,故不能使用click事件作为下拉列表选中具体值的做法。

 

正确示范:

 

1 $("select#status").change(function(){
2     console.log($(this).val());
3 });

 

W3SCHOOL  对change事件的诠释如下:

 

定义和用法

 

当元素的值发生改变时,会发生 change 事件。

 

该事件仅适用于文本域(text field),以及 textarea 和 select 元素。

 

change() 函数触发 change 事件,或规定当发生 change 事件时运行的函数。

 

注释:当用于 select 元素时,change 事件会在选择某个选项时发生。当用于 text field 或 text area 时,该事件会在元素失去焦点时发生。

 


 

通过以上,能清楚明白,当对于Select下拉列表时,应该使用Change事件。

补充:

因为页面翻页也是使用Ajax技术进行异步处理,当翻页后,原写法将失效,此时应该使用如下代码进行执行:

1 $(document).on("change",'select#status',function(){
2     console.log($(this).val());
3 });

 

 

 

推荐阅读