博客
关于我
自定义JS事件中快速选择指定dom
阅读量:581 次
发布时间:2019-03-11

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

1. 描述

 

帆软报表中 控件的事件功能非常强大,能够通过自定义 js 做出非常匠心独具的效果,在本文档中搜索 “JS实现” 就可以看到通过自定义 js 可以获得非凡的扩展性。

 

2. 问题

但是 js 对于大多数非程序员或者报表制作业务人员来说是不熟悉的,需要额外的学习成本,尤其是 jQuery 选择器。而报表设计制作中的 自定义 js 事件,又非常需要获取指定的 dom 完成绑定事件或者修改属性的操作。因此,本文档帮助你快速选择指定 dom,完整自定义 js 的设计。

 

3. 准备

 

设计器和 Chrome 浏览器(最好是最新版本或者符合当前报表系统浏览需求的版本)。

 

4. 步骤

为了能有具体情况说明,我们拿 这个  例子作为说明。

 

4.1 报表设计

 

依据  中的操作,并制作完成其中3.2报表设计中的1,2,3 步。

 

4.2 JS 脚本中快速获取相关dom

1)通过上文准备好的 Chrome 浏览器预览模板,在 Chrome 浏览器中通过 F12 键 或者 Ctrl+Shift+I 快捷键 或者 设置中更多工具>开发者工具中打开 开发者工具窗口,如下图所示。

2)进入 dom 选定状态

首先点击 上图中 A 框中的 ELements,切换成 Elements 界面,然后点击 图中 B 框中的 图标,进入 do'm 选择状态。 在此状态下,鼠标悬浮在页面中的元素上时,会在鼠标所在位置上方显示改元素的一些信息,比如上图中,鼠标悬浮在 “修理厂” 这个 tab 按钮上,在“修理厂”上方,显示了这个元素是 div, 他的 类属性 class 是 fr-widget-click , 大小时 57 x 31。

3)在需要获取的 dom 上 单击

在需要获取的 dom 上单击之后,Elements 中自动选中了该dom 。如下图红框部分所示。

注:也可以直接在 Elements 上下选择,通过观察元素是否被选中来当前选中的 dom 节点是否是需要的。(推荐)

4)获取 dom 所对应的选择器

鼠标移至Elements 中被选中的 dom。在其上面右键,选择Copy > Copy selector,点击 Copy selector. 这时,该 dom 的选择器已经复制到剪贴板中,在设计器 js 脚本编辑器 中进行粘贴 就可以使用了。如下图:

在这个示例中,我选中的dom 即 “修理厂” 的 选择器是 

body > div.content-container.fr-quick-border-layout.ui-state-enabled > div > div > div > div.fr-quick-border-layout.ui-state-enabled > div.fr-horizontalboxlayout.ui-state-enabled > div:nth-child(2) > div

注:虽然它很长,但是它是非常精确的,是可以使用的。

通过 

$('body > div.content-container.fr-quick-border-layout.ui-state-enabled > div > div > div > div.fr-quick-border-layout.ui-state-enabled > div.fr-horizontalboxlayout.ui-state-enabled > div:nth-child(2) > div')

就可以使用他了。

通过同样的方式,我们可以完成  中 js 的编写。

最终得到:

setTimeout(function () {    $("body > div.content-container.fr-quick-border-layout.ui-state-enabled > div > div > div > div.fr-quick-border-layout.ui-state-enabled > div.fr-horizontalboxlayout.ui-state-enabled > div:nth-child(2) > div")        .bind("click", function () {            $('body > div.para-container.fr-quick-border-layout.ui-state-enabled > div:nth-child(2) > div > div:nth-child(2)').show();            $('body > div.para-container.fr-quick-border-layout.ui-state-enabled > div:nth-child(2) > div > div:nth-child(3)').show();        });    $("body > div.content-container.fr-quick-border-layout.ui-state-enabled > div > div > div > div.fr-quick-border-layout.ui-state-enabled > div.fr-horizontalboxlayout.ui-state-enabled > div:nth-child(1) > div").bind("click", function () {        $('body > div.para-container.fr-quick-border-layout.ui-state-enabled > div:nth-child(2) > div > div:nth-child(2)').hide();        $('body > div.para-container.fr-quick-border-layout.ui-state-enabled > div:nth-child(2) > div > div:nth-child(3)').hide();    });}, 100);

由于得到的 js 代码是比较长的,因此最好事先在文本编辑器中进行编辑,然后复制粘贴到设计器的 js 脚本编辑器中。

 

5. 注意事项

 

1) 获取得到选择器很长

虽然很长,但是是非常准确的,对于无太多 js 知识的模板制作者来说,这个是很合适的。

而且,由于不清楚预览后生成的具体 dom 信息规律,因此,这种方式非常简单直接。

2.)由于是通过 Chrome 帮助获取的。因此在 主流的现代浏览器 上预览是没有问题的,但是在 一些低版本 IE 上面 可能会出现问题。请谨慎使用该方法。

主题: 

转载地址:http://qrqvz.baihongyu.com/

你可能感兴趣的文章
Nacos源码分析:心跳机制、健康检查、服务发现、AP集群
查看>>
nacos看这一篇文章就够了
查看>>
Nacos简介、下载与配置持久化到Mysql
查看>>
Nacos简介和控制台服务安装
查看>>
Nacos管理界面详细介绍
查看>>
Nacos编译报错NacosException: endpoint is blank
查看>>
nacos自动刷新配置
查看>>
nacos运行报错问题之一
查看>>
Nacos部署中的一些常见问题汇总
查看>>
NACOS部署,微服务框架之NACOS-单机、集群方式部署
查看>>
Nacos配置Mysql数据库
查看>>
Nacos配置中心中配置文件的创建、微服务读取nacos配置中心
查看>>
Nacos配置中心集群原理及源码分析
查看>>
nacos配置在代码中如何引用
查看>>
nacos配置新增不成功
查看>>
nacos配置自动刷新源码解析
查看>>
nacos集成分布式事务插件Seata的序列化问题,实际上是Seata本身存在bug!!
查看>>
Nacos集群搭建
查看>>
nacos集群搭建
查看>>
nacos集群网络分区对的影响和运维方式
查看>>