jquery怎么根据html()的内容来选择?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jquery怎么根据html()的内容来选择?相关的知识,希望对你有一定的参考价值。

<ul>
<li>First</li>
<li>Firstt</li>
</ul>

如上,如何选中html()值为First的jquery对象,
$([innerHTML='First'])这种方法不行,说没有innerHTML这个属性.

$(":contains('First')");//这种是jquery内置的包含选择器,但是因为是包含,因此选择的内容只要包含“First”就会选中。

另外一种通用的。用过滤函数。

$('*').filter(function(index, el)
    var childNodes = el.childNodes;
    return childNodes.length === 1 && childNodes[0].nodeType === 3 && childNodes[0].nodeValue === 'First';
);

但上面的这种方式只适合你这种情况,如果你的li元素像下面这样:


<ul>
<li>First<a href="">这是链接哦</a>
</ul>

也是不行的。就是说,必须元素下只有文字,不再有其他元素。

追问

你们没懂我的意思,我的意思是问jquery有没有直接选择的方法,而不是遍历.
如果遍历的话,下边的这段代码你看看是否可以.
$("li").filter(function ()
return $(this).html().trim() === 'First'
);

追答

jquery选择器在支持querySelector的情况下。用的是css选择器。如果不支持css选择器,jquery内部的选择器用的是sizzle.js。所以说,无论如何,要查找某个文档元素,必然是需要遍历的,要么是浏览器的css选择器帮你遍历,要么是jquery的sizzle帮你遍历,要么就是你自己遍历。

现在你想要根据html的内容筛选元素,首先我要说,这种方式的效率是极为低下的,css选择器里没有这种选项。jquery也仅仅提供了$(":contains('First')")这种选择器。跟你的要求最为接近。

至于你想要jquery直接帮你完成你的要求,这是绝对不可能的。没有这样的函数帮你实现。因为这样的函数效率太低了。

用filter的方式,你写的方式当然是可以的,但也仅此而已,不能适应其他的情况。

参考技术A

first 是第一个li里面的 你可以获取第一个li试试

$('ul li:first')

追问

这我知道啊,我是说当有很多个li的时候,怎么确定哪个是我需要的?

追答

可以啊;

用另外一种方法

这是我写的一个例子,Jquery库文件自己引入下

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<script type="text/javascript" src="jquery-1.4.3.min.js"></script>
<script type="text/javascript">
$(function()
var xx=$('.box p').text();
if(xx=="联系我们")
$('.box p').text('加入我们');

)
</script>
</head>

<body>
<div class="box">
<p>联系我们</p>
</div>
</body>
</html>

参考技术B <script>
$("li").click(function()
var num = $("li").index(this);
if(num == 0)
alert($(this).html())

);
</script>

JQuery

jQuery的选择器

1、基本选择器(重点)

  • #id :根据元素的id属性来获取元素
  • element :根据元素的名称来获取元素
  • selector1,selector2 :同时获取多个元素
  • .class :根据元素的class属性来获取元素

 

demo01_jiben.html 示例代码:

 技术分享

技术分享

 

 

2、层级选择器(重点

  • ancetor  descendant :选取祖先元素下的所有后代元素(多级)
  • parent  >  child :选择父元素下的所有子元素(一级)
  • prev  +  next :选取当前元素紧邻的下一个同级元素
  • prev  ~  siblings :选取当前元素下面的所有同级元素

 

demo02_cengji.html 示例代码:

 技术分享

 

 技术分享

 

3、简单选择器

  • :first :获取第一个元素
  • :last 获取最后一个元素
  • :even 偶数,获取偶数行数据
  • :odd  奇数,获取奇数行数据
  • :eq(index) 获取索引等于index元素,index默认从0开始
  • :gt(index) 大于,获取索引大于index元素
  • :lt(index) 小于,获取索引小于index元素
  • :not(selector) :获取除指定选择器以外的其他元素

 

demo03_jiandan.html 示例代码:

 技术分享

技术分享

 

 

4、内容选择器

  • :contains(text) :获取内容包含text文本的元素
  • :empty :获取内容为空的元素
  • :has(selector) 获取内容包含指定选择器的元素
  • :parent :获取内容不为空的元素(特殊

 

demo04_neirong.html 示例代码:

 技术分享

技术分享

 

 

5、可见性选择器

  • :hidden :获取所有隐藏元素
  • :visible :获取所有可见元素

 

demo05_kejianxing.html 示例代码

 技术分享

技术分享

 

 

6、属性选择器

  • [attribute] :获取具有指定属性的元素
  • [attribute=value] :获取属性值等于value的元素
  • [attribute!=value] 获取属性不等于value的元素
  • [attribute^=value] 获取属性值以value开始的元素
  • [attribute$=value] :获取属性值以value结尾的元素
  • [attribute*=value] 获取属性值包含value的元素
  • [attribute1][attribute2]...[attributeN] :获取同时拥有多个属性的元素

 

demo06_shuxing.html 示例代码:

 

 技术分享

技术分享

7、子元素选择器

  • :nth-child(index/even/odd) 1算起,匹配子元素等于index/even/odd元素
  • :first-child :获取第一个子元素
  • :last-child 获取最后一个子元素
  • :only-child :如果当前元素是唯一的子元素,则匹配

 

demo07_ziyuansu.html 示例代码

 

 

8、表单选择器

  • :input :选取页面中的所有表单元素,包含select以及textarea元素
  • :text 选取页面中的所有文本框
  • :password :选取所有的密码框
  • :radio :选取所有的单选按钮
  • :checkbox :选取所有的复选框
  • :submit 获取submit提交按钮
  • :reset :获取reset重置按钮
  • :image :获取type=’image’的图像域
  • :button :获取button按钮
  • :file :获取type=’file’的文件域
  • :hidden :获取隐藏表单

问题:请说出$(‘input’)$(‘:input’)选择器的区别?

$(‘input’) 选取页面中的所有input表单元素

$(‘:input’) 选取页面中的所有表单元素,包含select以及textarea元素

 

demo08_form.html 示例代码

 

 

9、表单对象属性选择器

  • :enabled :获取所有可用表单元素
  • :disabled :获取所有不可用表单元素
  • :checked :获取所有选中的表单元素主要针对radio以及checkbox
  • :selected :所有所有选中的表单元素主要针对select

 

demo09_form.html 示例代码:

 

 

 

DOM对象与jQuery对象

1DOM对象

在Javascript中,通过document.方式获取的对象都属于DOM对象。

 

运行结果:[object HTMLDivElement]使用调试工具调试:

 

2jQuery对象

在jQuery中,通过$(选择器)形式获取的对象,都属于jQuery对象。

 

运行结果:[object Object] 使用调试工具调试:

 

3DOM对象与jQuery对象区别

以上两个案例分析可知,DOM对象与jQuery对象是两个完全不同的对象。但是两者还存在某些联系,如下图所示:

 

调试后,如下图所示:

 

由上图分析可知:jQuery对象的本质就是一个类数组的特殊对象。

继续调试(打开jQuery对象中的每个数组元素后,如下图所示:

 

由上图分析可知:jQuery对象的本质就是一个类数组的特殊对象但是每一个数组元素又是一个DOM对象

4DOM对象与jQuery对象的互相转化

① DOM对象转jQuery对象

jQuery对象 = $(DOM);

② jQuery对象转DOM对象

DOM对象 = jQuery对象[索引];

DOM对象 = jQuery对象.get(索引);

demo12_dom_jq.html 示例代码:

 

jQuery中的属性操作

1基本属性操作

  • attr(name) :获取元素的name属性
  • attr(key,value) :设置元素的属性
  • attr(properties) :一次为元素设置多个属性,要求参数是一个json对象
  • attr(key,fn) :使用函数的返回值设置元素的属性
  • removeAttr(name) :删除元素的name属性

 

demo13_attr.html 示例代码

 

 

2css属性操作

  • css(name) :获取元素的name属性
  • css(name,value) :设置元素的name属性
  • css(properties) :一次为元素设置多个属性

 

demo14_css.html 示例代码:

 

3class属性操作

  • addClass(class) :为元素添加class属性
  • removeClass(class) :移除元素的class属性
  • toggleClass(class) :切换元素的class属性,如果存在则移除,反之则添加
  • hasClass(class) :判断元素是否具有class属性

 

demo15_class.html 示例代码:

 

 

4、文本/的操作

  • html() :获取元素的html内容
  • html(val) :设置元素的html内容

 

  • val() :获取表单元素value
  • val(val) :设置表单元素的value

 

  • text() :获取元素的文本内容(不包含标签)
  • text(val) :设置元素的文本内容(如果包含标签,当做普通文本处理)

 

demo16_wenben.html 示例代码:

 

 

5offset属性操作

  • offset() 获取元素的位置,返回json对象,包含lefttop属性
  • offset(coordinates) 设置元素的位置,要求参数是一个json对象,必须包含lefttop属性

 

demo17_offset.html 示例代码:

 

 

6、尺寸属性操作

  • width() :获取元素的宽度
  • width(value) :设置元素的宽度

 

  • height() :获取元素的高度
  • height(value) :设置元素的高度

 

demo18_chicun.html 示例代码:

 

 

jQuery框架中的事件

1、页面载入事件

① 在Javascript原生代码中,我们可以通过window.onload实现页面载入事件。

② 在jQuery代码中,我们可以通过ready方法来实现页面载入事件。

 

基本语法:

$(document).ready(function(){

//jQuery代码

});

demo19_ready.html 示例代码:

 

 

 

特别注意:ready方法在jQuery中还有一种简写形式:

$(function(){

jQuery代码

});

示例代码:

 

2window.onloadready方法的区别

① window.onload执行过程:当页面中的所有元素(也包括外部元素)加载完毕后,才会触发。

② ready方法执行过程:当页面中所有DOM元素加载完毕后,可能外部元素还没有加载完毕,其就会立即触发。所以ready方法要略快于window.onload方法

 

demo20_qubie.html 示例代码:

 

3jQuery中常用的事件(方法

  • blur(fn) :当失去焦点时触发
  • change(fn) :当下拉选框状态改变时触发
  • click(fn) :当单击时触发
  • dblclick(fn) :当双击时触发
  • focus(fn) :当获取焦点时触发
  • keydown(fn) :当键盘按下时触发
  • keyup(fn) :当键盘弹起时触发
  • keypress(fn) :当键盘按下时触发
  • load(fn) :当页面载入完毕后触发,与ready方法类似
  • unload(fn) :当页面关闭时触发
  • mousedown(fn) :当鼠标按下时触发
  • mouseup(fn) :当鼠标弹起时触发
  • mousemove(fn) :当鼠标移动时触发,每移动一次触发一次
  • mouseover(fn) :当鼠标悬浮时触发
  • mouseout(fn) :当鼠标离开时触发
  • resize(fn) :当浏览器窗口大小改变时触发
  • scroll(fn) :当滚动条滚动时触发
  • select(fn) :当文本框的文本选中时触发
  • submit(fn) :当表单提交时触发

 

demo21_shijian.html 示例代码:

 

4jQuery中事件的绑定方式

在JS中,事件绑定一共有3形式:① 行内绑定 ② 动态绑定 ③ 事件监听

demo22_bangding.html 示例代码:

 

运行结果:弹出first然后弹出second,由此可知,jQuery中的所有绑定都是通过事件监听来实现的。

5jQuery中的事件切换

  • hover(over,out) :鼠标悬浮鼠标离开事件

over 鼠标悬浮时所触发的事件处理程序

out 鼠标离开时所触发的事件处理程序

 

  • toggle(fn,fn) :事件切换,可以拥有多个参数,依次执行

fn :当第一次触发时,执行第一个fn事件处理程序

fn :当第二次触发时,执行第二个fn事件处理程序

fn :第三次触发时,执行第一个fn事件处理程序

 

demo23_hover.html 示例代码:

 

 

demo24_toggle.html 示例代码

 

 

运行结果:

 

jQuery课程总结

1jQuery概述

为什么需要jQuery?(JavaScript本身存在三个弊端:① 复杂DOM模型操作 ② 不一致的浏览器体现 ③ 缺乏便捷开发、调试工具

代码库:对Javascript代码进行封装,简化JS操作。

jQuery概述

jQuery是一个快速、简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScript代码库(或JavaScript框架)。jQuery设计的宗旨是“write LessDo More”,即倡导写更少的代码,做更多的事情。它封装JavaScript常用的功能代码,提供一种简便的JavaScript设计模式,优化HTML文档操作、事件处理、动画设计和Ajax交互。

2jQuery中的九大选择器

基本选择器(#id.classelementselector,selector)

层级选择器(祖先 后代,父元素 > 子元素,元素 + 紧邻的下一个同级元素,元素 ~ 下面所有的同级元素)

简单选择器(eqnot)

内容选择器

属性选择器([属性])

子元素选择器

表单选择器(:input)

表单对象属性选择器(:checked:selected)

3DOM对象与jQuery对象

dom对象document.获取

jQuery对象:$(选择器);

dom对象 不等于 jQuery对象

jQuery对象的本质是一个类数组的特殊对象,每个数组元素又是一个dom对象。

dom对象 = jQuery对象[索引] jQuery对象.get(索引);

jQuery对象 = $(dom);

4jQuery的属性操作

attr属性css属性、class属性、文本/(html、textval)offset、尺寸(widthheight)

5jQuery中的事件

ready方法(dom结构加载完毕后就会立即执行)、jQuery中的每个事件都是以方法形式存在的,其利用了事件监听实现了事件的绑定

6、事件切换

hovertoggle

 

 

 

以上是关于jquery怎么根据html()的内容来选择?的主要内容,如果未能解决你的问题,请参考以下文章

jquery标签选择器怎么循环

用js或者jq实现,根据下拉菜单的字段来显示对应的内容?

使用 JQuery 的 find 方法,如何根据“foo”的子元素的内容选择某个 HTML 元素“foo”的兄弟?

jquery jqprint 打印 每页控制打印内容,每一页都带有表头,怎么搞啊

用jquery怎么获取页面的特定内容

10分钟-jQuery-基础选择器