jQuery练习七

ex-7.html



<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Untitled Document</title>
<script type="text/javascript" src="scripts/jquery-1.4.2.js"></script>
<script type="text/javascript">

function replaceElement(ele1, ele2) {
var $ele1Temp = $(ele1).clone(true) ;
var $ele2Temp = $(ele2).clone(true) ;

$(ele1).replaceWith($ele2Temp) ;
$(ele2).replaceWith($ele1Temp) ;
}

//需求: 点击 city 节点的任何 li 节点都能完成如下功能: 替换为 game 相应索引的节点; 反之亦然
$(function(){

//为每一个 li 节点增加 index 属性
/**
* $("li") 这里返回的是一个数组!,那么问题就来了!
* 为什么在$("li").click(...)增加方法的时候,没有使用each()这个方法呢?
* 这是因为给每一个 li 节点增加的是相同的方法(看清楚是相同的),是不需要用each()这个方法的
* 可是这里是在给每一个 li 节点类型的增加一个索引, 从而使每一个 li 节点与其他的不同!(看清楚这个说的是不同!)
* 所以就使用了each()这个方法
*
*/
$("li").each(function(i){
//这里的 i 是each()方法默认自带的!可以理解是这个标签数组的索引

//alert("0000") ;

$(this).attr('index', i) ;

//alert('111') ;

$(this).click(function() {
//获取 index 属性值
var index = $(this).attr('index') ;

//设置与 index 相交换的那个对象的 索引
var targetIndex = 0 ;

if(index < 4) {
targetIndex = parseInt(index) + 4 ;
}else {
targetIndex = parseInt(index) - 4 ;
}

var target = $("li").get(targetIndex) ;

//alert($(this).attr('index')) ;
/*
这里应该注意一个小小的问题!仔细的看一下下面两行代码!
说白了就是-->在元素还没有交换之间先将 index 的属性值交换了!
为什么要在没有交换属性之前先将 index 的属性值交换呢?
这是因为属性值的交换和元素整体的交换是不一样的!前者是部分交换而后者是整体交换

在这里首先先交换属性值是为了为后面整体交换做准备!
并且也为任意两个节点相互交互(这里说的是相互交换而不是单向交换)做准备!
*/
$(this).attr('index', targetIndex) ;
$(target).attr('index', index) ;

//这里就是元素的整体交换
replaceElement(this, target) ;
}) ;
}) ;

}) ;

</script>
</head>
<body>
<p>
你喜欢哪个城市?
</p>
<ul id="city">
<li id="bj" name="BeiJing">
北京
</li>
<li>
上海
</li>
<li>
东京
</li>
<li>
首尔
</li>
</ul>
<br>
<br>
<p>
你喜欢哪款单机游戏?
</p>
<ul id="game">
<li id="rl">
红警
</li>
<li>
实况
</li>
<li>
极品飞车
</li>
<li>
魔兽
</li>
</ul>
</body>
</html>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
(答案见下载资源) 上机任务1 用chrome打开dom.sample2.html页面, 在chrome的控制台中输入jQuery代码并执行,完成以下选择动作: (1)查找id号为tigerLily的元素 (2)查找拥有类myList的元素 (3)查找所有的input元素 (4)查找所有img元素和tr元素 (5)查找id号为coffeePot和id号为someDiv的元素 (6)选择具有id属性的所有元素 (7)选择具有id属性的input元素 (8)选择其value属性等于A的元素 (9)选择其value属性等于A或等于C的元素 (10)选择其title属性值中含有dog的img元素 (11)选择其href属性值以http开头的a元素 (12)选择div元素内嵌套的span元素 上机任务2 用chrome打开dom.sample2.html页面, 在chrome的控制台中输入jQuery代码并执行,完成以下选择动作: (13)选择元素li,该元素作为拥有myList类的ul元素的直接子元素 (14)选择id号为radioA的input元素后面的第一个input兄弟元素 (15)选择id号为radioA的input元素后面的所有input兄弟元素 (16)选择dom sample页面中第3个tr元素 (17)选择其type属性值checkbox且索引为偶数的input元素 (18)选择非最后一行的tr元素 (19)选择所有的checkbox元素 (20)选择所有被选中的表单元素 (21)选择含有1972的td元素 (22)选择包含有sapn元素的div元素 (23)选择表格中每行的第一个单元格和最后一个单元格 (24)选择表格中第3行,标题行不算(要求用nth-child()过滤器) 上机任务3 用chrome打开dom.sample2.html页面,该页面中内嵌有几个CSS类:.red .green .blue .yellow .thickBorder .seeThrough 在chrome的控制台中输入jQuery代码并执行,完成以下选择动作: (1)将拥有alt属性的倒数第二个图片元素应用yellow类 (2)将第一个checkbox表单元素应用.green样式 (3)求id值为checkbox3的元素在所有表单元素里的顺序号 (4)用一条链式语句完成:先对所有img元素应用seeThrough样式,再为所有img元素和tr元素应用yellow样式 (5)用filter方法实现:选择单元格内容为Java或Smalltalk的单元格 (6)取图片集中的第2,3,4张图片 (7)用has方法实现:选择那些包含有ul元素的li元素 (8)将tbody每个单元格里的文字设为:我爱jQuery (9)查找form元素的后代元素中标签为label的元素 (10)查找表单元素中是否有id值为checkbox5的元素 提示: 为某dom元素应用某css样式可以使用jQuery中的addClass方法,例如:将id为tt的div元素应用.bt样式,可用些语句:$("#tt").addClass("color","red");
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值