博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JS切换卡效果
阅读量:6552 次
发布时间:2019-06-24

本文共 3433 字,大约阅读时间需要 11 分钟。

hot3.png

JS实现动画切换效果,大体实现效果为五个页面,依次触发相应按钮,类比轮播图进行相应页面效果的切换和替换。

参考某源码进行学习,如下:

//配置向导    $(document).delegate('.tab-content>.tab-pane .operation .next', 'click', function(ev){        $(this).closest('.tab-pane').removeClass('active').next().addClass('active');        $('.events .wizard-item.active').next().addClass('active');        return false;    })    .delegate('.tab-content>.tab-pane .operation .prev', 'click', function(ev){        $(this).closest('.tab-pane').removeClass('active').prev().addClass('active');          $('.events .wizard-item.active').last().removeClass('active');        return false;    })    .delegate('form[name="setclusterConfigStep5"] .operation .finish', 'click', function(ev){        $('#clusterConfigModal').modal('hide');        return false;    });    $('#clusterConfigModal').on('hide.bs.modal', function () {      //恢复最初始状态       $('.events .wizard-item').removeClass('active').first().addClass('active');       $('.tab-content .tab-pane').removeClass('active').first().addClass('active');    });

知识点:

1: $(document)是一个选择器,选中的是整个html所有元素的集合

问题1.1:

(document).on(‘click′,′className′,function()); (‘className’).on(‘click’,function(){});
两者都是给‘className’绑定事件,有何区别?

答: (document).on是把事件委托到document上, (‘className’).on是把事件绑定到.className元素上。效率方面,直接绑定在元素上会更为高效,绑定在document上,每次document有点击动作,浏览器都会判断当前点击的对象,如果匹配,再决定要不要执行,多了一个判断的环节。但在目前开发中,JS渲染效率很高,所以此异同基本可以忽略不计。此外,针对委托document的触发特点,延伸一下, ("className").on为onclick绑定,只有在页面onload的时候执行一次,当页面刷新后,新加载的具有className的元素便没有事件绑定到上面了,相反 (document).on这种方法会刷新和重新赋予绑定操作,所以一定程度上更为全面。

参考文章:

2:delegate:给某元素A绑定触发事件,规定选择器选择的元素B执行某函数

①:$(“#id”).delegate 绑定一个事件,调用相应的函数

②:一个事件绑定多个函数

.delegate("#id",function(){     function A(){}     function B(){}....})

③:给元素A绑定多个触发事件

$("table").delegate("td","click mouseover mouseout mousedown", function(e){     //当多个事件执行的不为同一个函数时,用type判断事件类型    var type= e.type;    if (e.type=="click")    else if    else if    else});

④:selector选择器一次性绑定多个元素。

.delegate('form[name="setclusterConfigStep5"] .operation .finish',cancel, 'click', function(ev){        $('#clusterConfigModal').modal('hide');        return false;    });//该例通过多元素选择器为多个元素绑定事件

⑤:链式写法,一次性委托多个delegate(on)。—待补充

$(document).delegate().delegate().delegate();

JQuery1.7后 delegate()被替换成了 on(),传递和处理事件数据的方式是一样的。取消delegate的事件 .undelegate()方法. .on()的取消事件.off()。

参考文章:

3:this在函数中的用法之一

$(document).delegate('.tab-content>.tab-pane .operation .next', 'click', function(ev){        $(this).closest('.tab-pane').removeClass('active').next().addClass('active');        $('.events .wizard-item.active').next().addClass('active');        return false;    })//.next()内不包含选择器的时候,默认选中下一个紧邻的同胞元素

code翻译:给所有.next 按钮绑定 click 事件,执行的函数内容为:通过this选择器选择到最近的tab-pane元素,移除active样式,并通过链式写法,用next()方法搜索到下一个tab-pane元素,给予其active样式

在这里插入另一个知识点,上例中一共进行2次的选择器搜索,在途中没有被中断其搜索状态,即从this–closest的tab-pane–next(),逻辑等同于:

$(this).closest('.tab-pane').removeClass('active');$(this).closest('.tab-pane').next().addClass('active');//等同于下列代码$(this).closest('.tab-pane').removeClass('active').end().closest('tab-pane').next().addClass('active');

.end()方法结束当前链条中的最近的筛选条件,并将匹配元素集还原为之前的状态.

下例为end()中断过的情况:

$ (this).find ("div").css ("background", "red").end().siblings ().find ("div").css ("background", "green");

4:bootstrap模态框的使用

参考文档:
bootstrap对于模态框提供了,一些方法,属性和触发事件。典型的方法有 modal(‘show’)、modal(‘hide’)等
例子中的hide.bs.modal 事件是当调用hide实例方法时触发。其他三个事件为:show.bs.modal、shown.bs.modal和hidden.bs.modal

转载于:https://my.oschina.net/caiyunick/blog/806845

你可能感兴趣的文章
Java递归算法——阶乘
查看>>
Multi-voltage和power gating的实现
查看>>
JavaScript面向对象 ~ 原型和继承(1)
查看>>
spring cloud微服务分布式云架构--hystrix的使用
查看>>
解决Mac启动Eclipse Memory Analyzer报错问题
查看>>
连接池并发的实现原理
查看>>
创建Pch预编译文件
查看>>
阿里云Centos配置iptables防火墙
查看>>
PHP面试题汇总
查看>>
【树莓派】制作树莓派所使用的img镜像(一)
查看>>
理解网站并发量
查看>>
spring整合elasticsearch之环境搭建
查看>>
TensorFlow 架构与设计-编程模型【转】
查看>>
vue 组件编码规范
查看>>
如何通过结构中的某个变量获取结构本身的指针?(container_of详解)
查看>>
2.并发和并行
查看>>
iOS学习之Objective-C 2.0 运行时系统编程
查看>>
Exchange2007-Exchange2010升级-06 数据库高可用组的创建
查看>>
phpHiveAdmin是如何通过Hive/Hadoop工作的
查看>>
双向链表内结点的删除(4)
查看>>