博客
关于我
自定义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/

你可能感兴趣的文章
network小学习
查看>>
Netwox网络工具使用详解
查看>>
Net与Flex入门
查看>>
net包之IPConn
查看>>
Net操作配置文件(Web.config|App.config)通用类
查看>>
Neutron系列 : Neutron OVS OpenFlow 流表 和 L2 Population(7)
查看>>
New Relic——手机应用app开发达人的福利立即就到啦!
查看>>
NFinal学习笔记 02—NFinalBuild
查看>>
NFS
查看>>
NFS Server及Client配置与挂载详解
查看>>
NFS共享文件系统搭建
查看>>
nfs复习
查看>>
NFS安装配置
查看>>
NFS的安装以及windows/linux挂载linux网络文件系统NFS
查看>>
NFS的常用挂载参数
查看>>
NFS网络文件系统
查看>>
NFS远程目录挂载
查看>>
nft文件传输_利用remoting实现文件传输-.NET教程,远程及网络应用
查看>>
NFV商用可行新华三vBRAS方案实践验证
查看>>
ng build --aot --prod生成文件报错
查看>>