过滤器就是过滤条件,对已经定位到的数组中DOM对象进行过滤筛选,过滤条件不能独立出现再jQuery函数,如果使用只能出现在选择器后方。

jQuery中DOM对象顺序

  1. <div>1</div> <!--dom1-->
  2. <div>2</div> <!--dom2-->
  3. <div>3</div> <!--dom3-->
  4. //jQuery对象会按照页面书写的顺序读取DOM对象
  5. $("div") == [dom1,dom2,dom13]

注意:过滤器不能单独使用,必须和选择器一块使用。

基本过滤器

  1. 选择第一个first,保留数组中第一个DOM对象
    • 语法:$("选择器:first")
  2. 选择最后一个last,保留数组中最后的DOM对象
    • 语法:$("选择器:last")
  3. 选择数组中指定对象
    • 语法:$("选择器:eq(数组索引)")
  4. 选择数组中小于指定索引的所有DOM对象
    • 语法:$("选择器:lt(数组索引)") //不含索引本身
  5. 选择数组中大于指定索引的所有DOM对象
    • 语法:$("选择器:gt(数组索引)") //不含索引本身

示例: //本示例中有一些jQuery对象事件的知识,可以先去事件了解一些后再来看下面代码。

  1. <script type="text/javascript" src="./js/jquery-3.6.0.min.js"></script>
  2. <script type="text/javascript">
  3. //页面加载完成后绑定事件,等同于onload
  4. $(function(){
  5. //为btn1绑定按钮事件
  6. $("#btn1").click(function(){
  7. //过滤器
  8. var $obj = $("div:first");
  9. $obj.css("color","red");
  10. });
  11. //为btn2绑定事件
  12. $("#btn2").click(function(){
  13. var $obj = $("div:last");
  14. $obj.css("color","green")
  15. })
  16. //为btn3绑定事件
  17. $("#btn3").click(function(){
  18. //指定第三个div改变颜色
  19. var $obj = $("div:eq(3)");
  20. $obj.css("color","blue");
  21. })
  22. //为btn4绑定事件
  23. $("#btn4").click(function(){
  24. //指定小于3的div改变颜色
  25. $("div:lt(3)").css("color",'orange');
  26. })
  27. //为btn5绑定事件
  28. $("#btn5").click(function(){
  29. //指定大于3的div改变颜色
  30. $("div:gt(3)").css("color",'yellow');
  31. })
  32. })
  33. </script>
  34. ...
  35. <body>
  36. <div id="one">div0</div>
  37. <div id="two">div1</div>
  38. <div>
  39. div2
  40. <div class="son" style="color: black;">div3</div>
  41. <div class="son" style="color: black;">div4</div>
  42. </div>
  43. <div>div5</div>
  44. <br/>
  45. <span>我是span</span>
  46. <br/>
  47. <p>功能按钮</p>
  48. <input type="button" id="btn1" value="选择第一个div0"/> <br/>
  49. <input type="button" id="btn2" value="选择最后一个div5"/> <br/>
  50. <input type="button" id="btn3" value="索引等于3的div"/> <br/>
  51. <input type="button" id="btn4" value="索引小于3的div"/> <br/>
  52. <input type="button" id="btn5" value="索引大于3的div"/> <br/>
  53. </body>

表单属性过滤器

根据表单中DOM对象的状态情况,来过滤DOM对象的。如文本框是否为启用状态:enable、disable;选择状态:checked….

  1. 选择可用的文本框
    • 语法:$(":text:enable")
  2. 选择不可用的文本框
    • 语法:$(":text:disable")
  3. 复选框选中的元素
    • 语法:$(":checkbox:checked")
  4. 选择指定下拉列表的被选中元素
    • 语法:选择器>option:selected
    • 表示的是父子关系,父>子

举个例子

  1. <script type="text/javascript" src="./js/jquery-3.6.0.min.js"></script>
  2. <script type="text/javascript">
  3. $(function(){
  4. //获取按钮
  5. $("#btn1").click(function(){
  6. //获取所有可用的文本框
  7. var $obj = $(":text:enabled");
  8. //设置对象的value值为hello,val()函数传值调用即可
  9. $obj.val("hello");
  10. })
  11. $("#btn2").click(function(){
  12. //获取选中的复选框
  13. var $obj = $(":checkbox:checked");
  14. //遍历数组
  15. for (var i = 0;i<$obj.length;i++){
  16. //alert($obj[i].value); 方法一
  17. alert($($obj[i]).val()); //方法二
  18. }
  19. })
  20. $("#btn3").click(function(){
  21. //获取当前的下拉列表
  22. var $obj = $("select>option:selected");
  23. //输出value值
  24. alert($obj.val());
  25. })
  26. })
  27. </script>
  28. ...
  29. <body>
  30. <p>文本框</p>
  31. <input type="text" id="txt1" name="txt" value="text1" /><br/>
  32. <input type="text" id="txt2" name="txt" value="text2" disabled/><br/>
  33. <input type="text" id="txt3" name="txt" value="text3" /><br/>
  34. <input type="text" id="txt4" name="txt" value="text4" disabled/><br/>
  35. <br/>
  36. <p>复选框</p>
  37. <input type="checkbox" value="游泳"/>游泳<br/>
  38. <input type="checkbox" value="健身" checked/>健身<br/>
  39. <input type="checkbox" value="游戏" checked/>游戏<br/>
  40. <br/>
  41. <p>下拉列表</p>
  42. <select id="lang">
  43. <option value="java">java</option>
  44. <option value="python">python</option>
  45. <option value="javascript" selected>javascript</option>
  46. <option value="go">go</option>
  47. </select>
  48. <br/>
  49. <p>功能按钮</p>
  50. <button id="btn1">所以可用的text值设置为hello</button><br/>
  51. <button id="btn2">显示被选中的复选框的值</button><br/>
  52. <button id="btn3">显示下拉列表选中的值</button><br/>
  53. </body>