浅谈——jQuery选择器

浅谈——jQuery选择器

小白新作望大神指点–刘桂林 邮箱:1292010349@qq.com

1.属性选择器

//注:使用$()函数时,如果是获取标签,必须使用" “引起来,如果是DOM或者变量都不需要使用” "
以下代码为例

<div></div>
<div class="div0"></div>
<div class="div1"></div>
<div class="div2"></div>
<ul>
    <li></li>
    <li class="lis"></li>
    <li class="lis-1"></li>
    <li class="lis-2"></li>
    <li class="lis-3"></li>
    <li class="lis1"></li>
</ul>
<img src="#" title="img">
<a class="a0" title="links" href="#">超链接</a>
<div class="bn bns"></div>
<div class="bn bn1"></div>
<div class="bn bn2"></div>
<div class="bn5 bn"></div>

title属性标签

$("[title]"); //获取 属性是title属性的标签
$("a[title]"); //标签选择器和属性选择器组合

$("[title='img']"); //判断title标签属性值是img的,这里的=是一个
$("[title=img]");  //作用与上面代码相同,可不写单引号


class属性标签

$("[class^=div]");//class的值是以div起头的
$("[class^='div']");//以上面相同,可以加单引号
$("[class$='0']");//class的值是以0结尾的元素
$("[class|=lis]");//选中class的值是lis或者值是以lis起头并且后面紧跟一个)-元素
$("[class=~bn]");//选中class的类组中包含bn这个类的,也就是说这个类名可能前后有空格
$("[title!=img]");//选中title属性不是img这个值,也包括没有title属性的
$("[title][class][class!=lis]");//多项属性选择器

2.筛选器

以下代码为例
first,first-child,first-of-type的区别

	<ul>
    <li></li>
    <li></li>
    <li class="div0 div1"></li>
    <li class="div0"></li>
    <li class="div0"></li>
    <li class="div0"></li>
    <li></li>
</ul>
<div>
    <span></span>
</div>
<div class="div0">1</div>
<div class="div0">2</div>
<div class="div0">3</div>
<div>4</div>
<script>
	$(".div0:first");//这是可以使用的
	$(".div0:first-of-type");//这是不支持的因为没有父元素
	$("div:first");//这样是可以使 用的
	$("div:first-child");//这是不可以使用的,因为没有父元素
	$(".div0:first-child");//这样也不支持
	
	:not()不包含某些选择器的
	$("li[class!=div0]"); 速度快
	$("li:not([class=div0])");//和上面相同  速度慢
</script>
**按奇偶选择**
	$("li:even");//列表中从0开始的偶数行
	$("li:odd");//列表中从0开始的奇数行

按索引选择

$("li:eq(1)");//列表中索引值所对应的元素
$("li:gt(2)");//列表中索引值是2的向下所有的元素
$("li:lt(2)");//列表中索引值是2的向上所有的元素

其他选择器

$(":header");//h1-h6
$(":animated");//动画选择器
$(":focus");//汇集焦距选择器
$("li").eq(0);等同于$("li:eq(0)")
$("li").first();等同于$("li:first")
$("li").last():同于$("li:first")
$("li").not(["[class~=div0]"]);等同于$("li:not([class~=div0])")

内容过滤器

$("div:empty");//过滤div是空元素;不含有子元素和内容元素

div他的子项中有class是.div0
$(div:has(.div0));//找到的是父级元素,如果某个元素有div0这个class,就回找到它所有父级元素
$("div:parent");//过滤div中是不是空元素的,含有子元素和内容的元素; 与$(div:empty)相反

$("div").has(".div0");等同于$("div:has(.div0)")   前者效率高
$("span").parent();//仅找到当前选择器的父元素
$("span").parents();//找到所有的父元素
$("span").parentsUntil("body");//找到父级元素到某个父级元素为止
$("div:contains('内容')");  $("div").contains("2")//查找包含指定内容的元素
$("div:hidden");//查找隐藏的元素,主要是针对display:none来使用
$("div:visible");//查找显示的元素
$("li:only-child");//当前项仅为父元素的唯一子项
$("li:nth-child(2)");//有父元素的li列表中的第2个元素
$("li:nth-child(even)");//从1开始的偶数项
$("li:even");//这个是从0开始的

console.log($("li").is(".li0"))//判断列表中有没有class是.li0的元素
console.log($("li").is("#li0"))//判断列表中有没有id是.li0的元素
console.log($("li").hasClass("li0")//判断当前列表中有没有class是.li0,只能判断class,函数中不适用.来说明class名
$(("li").slice(2,5))//从jQuery列表中截取对应的元素

3.text html value html的使用

text
给所有的jQuery对象都写入aaa的字符

$("div").text("aaa")

给每个div写入不同的内容时

 var arr=["北京","上海","广州","武汉","深圳","杭州"];
 $("div").text(function(index,value){
 return arr[index];
 })
 如果容器数量比数组长度短时可使用each
 $.each(arr,function(index,value){
 return (index,value)
 });
 each也可遍历对象
 var obj={a:1,b:2,c:3,d:4};
 $.each(obj,function(prop,value){
 return (prop,value);
 })
 //下面两种样式一样
 $("div").each(function(index,elem){
 console.log(index,elem,this);//这里的this是该DOM对象
 })
 $.each($("div"),function(index,elem){
console.log(index,elem)
})

html

$("div").html("<a herf='#' >内容</a>");//给每个div添加带有超链接的‘内容’
console.log($("div").html());//这里仅获取第一个html内容
当需要给div加入不同的超链接内容时
var arr1=[
            {name:"网易",href:"http://www.163.com"},
            {name:"腾讯",href:"http://www.qq.com"}
        ];
$("div").html(function (index,value){
	if(arr1[index])
	return "<a href='"+arr1[index].href+"'>"+arr1[index].name+"</a>";
	//return `<a href="${arr1[index].href}">${arr1[index].name}</a>`;//用模板字符串表示
	return value
})        
//也可用cech遍历
$.each(arr1,function(index,item){
$("div").eq(index).html("<a href='"+tiem.href+"'>"+item.name+"</a>"")
})

value

$("input").val("aaa");给文本框添加value值
$("input").val();获取文本框的value值

4.属性设置

attr()
$("选择器").attr({
"属性1":function(index,value){
	return 值;
	},
"属性2":function(index,value){
	return 值;
	}	
})

5.css样式

<div></div>
    <div></div>
    <div></div>
    <div></div>

直接添加

$("div").css("backgroundColor","red"); //给所有div添加红色背景色

添加不一样的背景色时可进行判断

$("div").css("backgroundColor",function(index,value){
	return index===0 ? "red"  : "blue";
})
//给第一个div添加红色背景色,其他的为蓝色

添加多个样式

$("div").css({
	"	width":(index+1)*20+"px"
	},
	height:function (index){
	return (index+1)*20+"px"
	},
	backgroundColor:function(index){
	return "#"+(Math.floor(Math.random()*256*256*256)).toString(16) //添加随机颜色
	}
})

效果如下图
在这里插入图片描述
直接添加样式

当添加多个样式的时候可以使用空格分开
$("div").addClass("div0 div1"); 给div添加div0和div1的样式
可以移除任意一个样式
$("div").removeClass("div2");

点击切换样式

$("div").addClass("div0").on("click",function(e){
	$(this).toggleClass("div1") //这里点击时可以切换div1的样式,可来回切换 
	//$(this).toggleClass("div1",true)//这里只切换一次
	//$(this).toggleClass("div1",false)//这里不切换
})

6.DOM的宽高和位置

设置$("div").width(100);
点击增加宽度

$("div").on("click",function(e){
$(this).width($(this).width()+10)
});

仅获取的(可设置,不过我们一般不设置)

$("div').innerWidth();//获取div的width+padding
$("div').outerWidth();//获取div的width+padding+border;
$("div').outerWidth(true);//获取div的width+padding+border+margin;

仅获取,不可设置

$(".div1").position();//相对于父元素定位的位置
$(".div1").offset();//相对于页面的位置
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值