jQuery中的表格及其他应用

【表格】

1、表格变色

1.1 隔行变色

<tr><td>张三</td><td>男</td><td>浙江宁波</td></tr>

css代码:

.even {background: #f83;}
.odd {background: #ffe;}
添加样式
$("tr:odd").addClass("odd");
$("tr:even").addClass("even");

注意这样会把表头也算进去,需要排除表头中的tr,所以可以使用

$("tbody>tr:odd").addClass("odd");
$("tbody>tr:even").addClass("even");

设置某一行高亮显示状态,可用通过contians选择器实现

$("tr:contains('val')").addClass("selected");

1.2 单选框控制表格行变亮

为表格行添加单击事件

给单击行添加选中高亮样式,然后将其兄弟行的高亮样式移除,最后将当前行里的单选框设置选中

<tr>
	<td class="radio"><input type="radio" name="choice" value=""></td>
	<td>张三</td><td>男</td><td>浙江宁波</td>
</tr>
$("tbody>tr").click(function(){
	$(this)
	.addClass("selected")    //当前对象$(this)
	.siblings().removeClass("selected")    //当前对象变为$(this).siblings()
	.end()    //重新返回$(this)对象
	.find(":radio").attr("checked",true);
})

end()方法返回先前对象

如果有单选框被默认选中,也需要处理

$("table :radio:checked").parent().parent().addClass("selected");

可简化为

$("tbody>tr:has(:checked)").addClass("selected");

1.3 复选框控制表格行高亮

$("tbody>tr").click(function(){
	if($(this).hasClass("selected")){
		$(this)
		.removeClass("selected")
		.find(":checkbox").attr("checked",false);
	}else{
		$(this).addClass("selected")
		.find(":checkbox").attr("checked",true);
	}
})
$("#tbody2>tr:has(:checked)").addClass("selected");    //默认选中
也可简化如下
$("#tbody2>tr").click(function(){
	var hasSelected = $(this).hasClass("selected");
	$(this)[hasSelected?"removeClass":"addClass"]("selected")
	.find(":checkbox").attr("checked",!hasSelected);
})

2、表格展开关闭

$("#tb>tr.parent").click(function(){
	$(this).toggleClass("selected")
	.siblings(".child_"+this.id).toggle();
})

HTML代码

<tbody id="tb">
	<tr class="parent" id="row_1"><td colspan="3">前台</td></tr>
	<tr class="child_row_1"><td>张三</td><td>男</td><td>浙江宁波</td></tr>
	<tr class="child_row_1"><td>李四</td><td>男</td><td>浙江杭州</td></tr>
	<tr class="child_row_1"><td>赵柳</td><td>女</td><td>福建福州</td></tr>
	<tr class="parent" id="row_2"><td colspan="3">技术开发</td></tr>
	<tr class="child_row_2"><td>王二</td><td>男</td><td>浙江宁波</td></tr>
	<tr class="child_row_2"><td>翠花</td><td>女</td><td>辽宁沈阳</td></tr>
	<tr class="child_row_2"><td>狗蛋</td><td>男</td><td>吉林长春</td></tr>
</tbody>

如果要求进入页面时,表格是默认收缩的,只要出发click()事件就好

$("#tb>tr.parent").click(function(){
	$(this).toggleClass("selected")
	.siblings(".child_"+this.id).toggle();
}).click();

3、表格内容筛选

前面使用contains选择器实现的

$("tr:contains('val')").addClass("selected");

可以利用该选择器再结合jQuery中的filter()筛选方法,可以实现表格内容的过滤

$("#tb tr").hide()
.filter(":contains('二')").show();

表格上方添加文本框,用于根据用户输入的内容来筛选内容

$("#filterName").keyup(function(){
	$("#tb tr").hide()
	.filter(":contains('"+$(this).val()+"')").show();
})
注意表单元素有个特点,就是在舒心网页之后,其值会保持不变

要解决这个问题,只需要在DOM刚加载完时,为表单元素绑定事件并且立即触发该事件即可。

$("#filterName").keyup(function(){
	$("#tb tr").hide()
	.filter(":contains('"+$(this).val()+"')").show();
}).keyup();    //DOM加载完时,绑定事件完成后立即触发

【其他应用】

1、网页字体大小

控制文本的放大与缩小

HTML代码:

<div class="msg">
	<div class="msg_caption">
		<span class="bigger">放大</span>
		<span class="smaller">缩小</span>
	</div>
	<div>
		<p id="para">This is a text.This is a text.</p>
	</div>
</div>

jQuery代码:

$("span").click(function(){
	var thisEle = $("#para").css("font-size");	//获得字体大小
	var textFontSize = parseInt(thisEle,10);	//获得当前字体大小的数值
	var unit = thisEle.slice(-2);
	var cName = $(this).attr("class");
	if (cName == "bigger") {
		if (textFontSize <= 22) {    //设置最大字体
			textFontSize += 2;
		}
	} else if (cName == "smaller") {
		if (textFontSize >= 12) {    //色织最小字体
			textFontSize -= 2;
		}
	}
	$("#para").css("font-size",textFontSize+unit);
})

2、网页选项卡

通过隐藏或显示来切换不同的内容

HTML代码:

<div class="tab">
	<div class="tab_menu">
		<ul>
			<li class="selected">实事</li>
			<li>娱乐</li>
			<li>体育</li>
		</ul>
	</div>
	<div class="tab_box">
		<div>实事</div>
		<div class="hide">娱乐</div>
		<div class="hide">体育</div>
	</div>
</div>

jQuery代码:

var $div_li = $("div.tab_menu ul li");
$div_li.click(function(){
	$(this).addClass("selected")	//单击的li元素高亮
	.siblings().removeClass("selected");	//其他同辈元素移除高亮
	var index = $div_li.index(this);	//获取单击的li元素在全部li元素中的索引
	$("div.tab_box>div").eq(index).show()	//显示li对应的div内容
	.siblings().hide();		//隐藏其他同辈div元素
})

注意$("div.tab_box>div")与$("div.tab_box div")的区别

如果使用$("div.tab_box div")选择器,当子节点包含div元素时,就会引起程序混乱。这里需要获取当前选项卡下的子节点。

若要加强效果,如光标滑入滑出的效果,可以添加hover事件

var $div_li = $("div.tab_menu ul li");
$div_li.click(function(){
	$(this).addClass("selected")	//单击的li元素高亮
	.siblings().removeClass("selected");	//其他同辈元素移除高亮
	var index = $div_li.index(this);	//获取单击的li元素在全部li元素中的索引
	$("div.tab_box>div").eq(index).show()	//显示li对应的div内容
	.siblings().hide();		//隐藏其他同辈div元素
}).hover(function(){
	$(this).addClass("hover");
},function(){
	$(this).removeClass("hover");
})

3、网页换肤

原理:就是通过不同的样式表文件来实现不同皮肤的切换,并且需要将换好的皮肤记入cookie中,这样用户下次访问时,就可以显示用户自定义的皮肤了。

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>WebPageDemo</title>
	<link href="css/default.css" rel="stylesheet" type="text/css" />
	<link href="css/skin_0.css" rel="stylesheet" type="text/css" id="cssfile" />
	<script type="text/javascript" src="jquery.js"></script>
	<script type="text/javascript">
		$(function(){
			var $li = $("#skin li");
			$li.click(function(){
				$("#"+this.id).addClass("selected")    //当前选中的li元素
				.siblings().removeClass("selected");    //去掉其他同辈li元素的选中
				$("#cssfile").attr("href","css/"+this.id+".css");    //设置不同皮肤
			})
		})
	</script>
</head>
<body>
	<ul id="skin">
		<li id="skin_0" title="灰色" class="selected">灰色</li>
		<li id="skin_1" title="紫色">紫色</li>
		<li id="skin_2" title="红色">红色</li>
		<li id="skin_3" title="天蓝色">天蓝色</li>
		<li id="skin_4" title="橙色">橙色</li>
		<li id="skin_5" title="淡绿色">淡绿色</li>
	</ul>
	<div id="div_side_0">
		<div id="news">
			<h1 class="title">时事新闻</h1>
		</div>
	</div>
	<div id="div_side_1">
		<div id="game">
			<h1 class="title">娱乐新闻</h1>
		</div>
	</div>
</body>
</html>

但是当用户刷新网页或关闭浏览器后,皮肤又会被初始化,因此需要将当前选择的皮肤进行保存。

这种可以通过jQuery中的cookie插件实现。引入jQuery中的cookie插件

<script src="jquery.cookie.js" type="text/javascript"></script>
将当前皮肤保存到cookie中,
var $li = $("#skin li");
$li.click(function(){
	$("#"+this.id).addClass("selected")
	.siblings().removeClass("selected");
	$("#cssfile").attr("href","css/"+this.id+".css");
	$.cookie( "MyCssSkin" ,  this.id , { path: '/', expires: 10 });
})
保存后,可以通过cookie获取当前皮肤了。如果cookie确实存在,则将当前的皮肤设置为cookie记录的值。
var cookie_skin = $.cookie( "MyCssSkin");
if (cookie_skin) {
		$("#"+cookie_skin).addClass("selected")                //当前<li>元素选中
		.siblings().removeClass("selected");  //去掉其它同辈<li>元素的选中
		$("#cssfile").attr("href","css/"+ cookie_skin +".css"); //设置不同皮肤
		$.cookie( "MyCssSkin" ,  cookie_skin  , { path: '/', expires: 10 });
}
简化后的jQuery代码为
$(function(){
	var $li =$("#skin li");
	$li.click(function(){
		switchSkin( this.id );
	});
	var cookie_skin = $.cookie( "MyCssSkin");
	if (cookie_skin) {
		switchSkin( cookie_skin );
	}
});
function switchSkin(skinName){
		 $("#"+skinName).addClass("selected")     //当前<li>元素选中
		.siblings().removeClass("selected");    //去掉其它同辈<li>元素的选中
		$("#cssfile").attr("href","css/"+ skinName +".css");    //设置不同皮肤
		$.cookie( "MyCssSkin" ,  skinName , { path: '/', expires: 10 });
}










  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目标检测(Object Detection)是计算机视觉领域的一个核心问题,其主要任务是找出图像所有感兴趣的目标(物体),并确定它们的类别和位置。以下是对目标检测的详细阐述: 一、基本概念 目标检测的任务是解决“在哪里?是什么?”的问题,即定位出图像目标的位置并识别出目标的类别。由于各类物体具有不同的外观、形状和姿态,加上成像时光照、遮挡等因素的干扰,目标检测一直是计算机视觉领域最具挑战性的任务之一。 二、核心问题 目标检测涉及以下几个核心问题: 分类问题:判断图像的目标属于哪个类别。 定位问题:确定目标在图像的具体位置。 大小问题:目标可能具有不同的大小。 形状问题:目标可能具有不同的形状。 三、算法分类 基于深度学习的目标检测算法主要分为两大类: Two-stage算法:先进行区域生成(Region Proposal),生成有可能包含待检物体的预选框(Region Proposal),再通过卷积神经网络进行样本分类。常见的Two-stage算法包括R-CNN、Fast R-CNN、Faster R-CNN等。 One-stage算法:不用生成区域提议,直接在网络提取特征来预测物体分类和位置。常见的One-stage算法包括YOLO系列(YOLOv1、YOLOv2、YOLOv3、YOLOv4、YOLOv5等)、SSD和RetinaNet等。 四、算法原理 以YOLO系列为例,YOLO将目标检测视为回归问题,将输入图像一次性划分为多个区域,直接在输出层预测边界框和类别概率。YOLO采用卷积网络来提取特征,使用全连接层来得到预测值。其网络结构通常包含多个卷积层和全连接层,通过卷积层提取图像特征,通过全连接层输出预测结果。 五、应用领域 目标检测技术已经广泛应用于各个领域,为人们的生活带来了极大的便利。以下是一些主要的应用领域: 安全监控:在商场、银行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值