iframe中使用jquery进行查找的方法【案例分析】


Posted in Javascript onJune 17, 2016

本文实例讲述了iframe中使用jquery进行查找的方法。分享给大家供大家参考,具体如下:

问题:

今天在公司是给ckeditor添加一个“是否显示”图片标题的功能

难点:

插件的内容很多,功能相当强大,在短时间之内无法通读和理解里面的逻辑关系,而且修改的内容不能破坏插件内部的逻辑关系,不能因为添加一个功能而引入更多的问题,因此只能从局部去解决这个问题

突破口:

知道页面时使用iframe框架插入的html,页面有些初始化的功能是在这里完成的,因此在这里添加这个checkbox组件,然后根据最后的window去寻找自己想要处理的window对象——window.parent.document.body

jQuery(expression, [context])——如果指定了 context 参数,如一个 DOM 元素集或 jQuery 对象,那就会在这个 context 中查找。

下面这个例子就是想在iframe的父窗口中添加组件

$('tr.cke_dialog_ui_hbox', parent.document.body).prepend('<td><input type="checkbox" id="show_img_title" class="cke_dialog_ui_hbox_first">照片标题描述带入日记</td>');

不能在闭包里面去访问动态添加的组件,因为在页面加载的时候就已经运行了闭包里面的东西,但是页面还没有添加ID为kkkk的组件,使用$("#kkkk")得到的值就为空,这样不能实现预期的目的,出现异常的现象,在浏览器中会报脚本错误

如何判断jquery是否查找到符合条件的对象?

if(0==$(".check_show_img_title", parent.document.body).length){
   alert("没有查找到对象");
}else{
  alert("有"+$(".check_show_img_title", parent.document.body).length+"组件符合查询条件");
}

经验之谈:

在页面中动态添加了组件之后,由于刷新页面就恢复了正常初始化的状态,但是如果是局部刷新,可能会添加多个组件,但是如果只需要一个组件,则就是在离开页面的时候删除自己动态添加的组件,这样问题就来了,可能在不同的浏览器中不能删除,这样就会很郁闷,产生出浏览器兼容的问题,既然是这样那么可以换一种思维方式,在某种状态(在标签中添加属性)下就添加,否则就不添加,这样就不用去删除自己添加的组件了,换种方式解决了浏览器兼容的问题

希望本文所述对大家jQuery程序设计有所帮助。

Javascript 相关文章推荐
比较搞笑的js陷阱题
Feb 07 Javascript
jquery实现隐藏与显示动画效果/输入框字符动态递减/导航按钮切换
Jul 01 Javascript
一个JS函数搞定网页标题(title)闪动效果
May 13 Javascript
jquery中$each()方法的使用指南
Apr 30 Javascript
JavaScript声明变量名的语法规则
Jul 10 Javascript
jquery 重写 ajax提交并判断权限后 使用load方法报错解决方法
Jan 19 Javascript
jQuery页面元素动态添加后绑定事件丢失方法,非 live
Jun 16 Javascript
微信小程序 五星评分的实现实例
Aug 04 Javascript
ES6中新增的Object.assign()方法详解
Sep 22 Javascript
Angular实现搜索框及价格上下限功能
Jan 19 Javascript
Vue实现搜索 和新闻列表功能简单范例
Mar 16 Javascript
three.js实现圆柱体
Dec 30 Javascript
JS检测页面中哪个HTML标签触发点击事件的方法
Jun 17 #Javascript
jquery.qtip提示信息插件用法简单实例
Jun 17 #Javascript
jQuery实现区域打印功能代码详解
Jun 17 #Javascript
javascript日期比较方法实例分析
Jun 17 #Javascript
JS实现复制内容到剪贴板功能兼容所有浏览器(推荐)
Jun 17 #Javascript
JS简单实现DIV相对于浏览器固定位置不变的方法
Jun 17 #Javascript
JavaScript简单实现弹出拖拽窗口(二)
Jun 17 #Javascript
You might like
图解上海144收音机
2021/03/02 无线电
PHP memcache扩展的三种安装方法
2009/04/26 PHP
PHP 组件化编程技巧
2009/06/06 PHP
php json_encode()函数返回json数据实例代码
2014/10/10 PHP
PHP中使用SimpleXML检查XML文件结构实例
2015/01/07 PHP
PHP网络操作函数汇总
2015/05/18 PHP
PHP7.0安装笔记整理
2015/08/28 PHP
数组方法解决JS字符串连接性能问题有争议
2011/01/12 Javascript
JS两种定义方式的区别、内部原理
2013/11/21 Javascript
学习Angularjs分页指令
2016/07/01 Javascript
JS实现的相册图片左右滚动完整实例
2016/11/23 Javascript
原生js实现水平方向无缝滚动
2017/01/10 Javascript
基于layui的table插件进行复选框联动功能的实现方法
2019/09/19 Javascript
在VUE中使用lodash的debounce和throttle操作
2020/11/09 Javascript
[48:35]2018DOTA2亚洲邀请赛 4.1 小组赛 A组加赛 TNC vs Optic
2018/04/03 DOTA
[03:17]史诗级大片应援2018DOTA2国际邀请赛 致敬每一位坚守遗迹的勇士
2018/07/20 DOTA
[45:32]Liquid vs LGD 2018国际邀请赛淘汰赛BO3 第二场 8.23
2018/08/24 DOTA
[01:19:46]EG vs Secret 2019国际邀请赛淘汰赛 胜者组 BO3 第二场 8.21.mp4
2020/07/19 DOTA
python之模拟鼠标键盘动作具体实现
2013/12/30 Python
python实现目录树生成示例
2014/03/28 Python
用python实现的线程池实例代码
2018/01/06 Python
python实现杨氏矩阵查找
2019/03/02 Python
浅谈python多进程共享变量Value的使用tips
2019/07/16 Python
Python Numpy 控制台完全输出ndarray的实现
2020/02/19 Python
python通过函数名调用函数的几种场景
2020/09/23 Python
CSS图片翻转动画技术详解(IE也实现了)
2014/04/03 HTML / CSS
CSS3中伪元素::before和::after的用法示例
2017/09/18 HTML / CSS
CSS3+HTML5+JS 实现一个块的收缩与展开动画效果
2020/11/17 HTML / CSS
《晚上的太阳》教学反思
2014/04/23 职场文书
小学学雷锋活动总结
2014/04/25 职场文书
交通文明倡议书
2014/05/16 职场文书
公司年会策划方案
2014/05/17 职场文书
2014年领导班子工作总结
2014/12/11 职场文书
2014年个人工作总结模板
2014/12/15 职场文书
三峡人家导游词
2015/01/31 职场文书
Python Django框架介绍之模板标签及模板的继承
2021/05/27 Python