Jquery的一些坑和Linux的软连接的使用

6 篇文章 0 订阅

          前几天在写一个自己的小项目,用到iframe。但是在使用Juery操作iframe的时候发现了一些问题,弄了近20分钟才取到了iframe文档里面的DOM元素节点。原因是什么呢?

这就要讲一下$(document).ready和window.onload的一些小区别。  $(document).ready是在文档的大致DOMj结构生成时,就去执行了,然而window.onload是在HTML文件的所有

内容加载完毕以后才开始调用函数。所以,我一直写 $("#iframe").contents().find("#dom")  一直找不到的原因是,我在$(document).ready里面写得,文档内有全部加载,iframe的

src没有加载文档内容进来,但是$(document).ready已经执行了,它只管大致DOM结构出来就执行,而不是全部文档加载后执行,所以一直都拿不到iframe里面的DOM元素!!!

所以正确的做法是:


        1.   要获取iframe里面的DOM,必须在window.onload里面写,才能获取DOM元素对象。例如


        /./正确做法

         window.onload = function(){

 

                 $("#iframe").contents().find("#dom");    //此时能获取到iframe的DOM元素

          }


      //错误做法

       $(function(){


              $("#iframe").contents().find("#dom");   //获取不到DOM元素

      });


        2.第二点要讲的是   checkbox动态改变checked属性。使用attr会遇到坑


         本来想做一个checkbox点击全选/全取消。   首先判断attr("checked")是否选中,已经选中,然后removeAttr("checked"),如果不是,则添加属性  attr("checked",true)。

    逻辑上这样的判断是没有任何问题的。但是你一运行只能实现一次效果,后面的效果就没有了。也就是说点击全选,然后全选成功,再点击取消全选也成功。再点击,无效。

         原因:    jquery1.4以后新增 prop这个函数。和prop的效果大致也是一个意思。都是属性。  但是attr是文档节点的属性 ,然而prop是JS对象的属性。  所以我怀疑,用attr去

操作的时候,removeAttr就真地移除了checked="checked"。之后再怎么操作都不行了。   所以一下改用prop直接解决问题。

          总结:  能用prop的地方,不要再使用attr了。attr也是依赖于prop实现的,所以用attr可能会出现一些问题。搞得我以为自己的逻辑出错了,排查半天。    


     3.PHP中再Linux服务器上部署,可以采用ln  -s  软连接的形式,访问到当前网站目录的根目录的上一级目录或者更多。  

使用php访问到软连接,会去执行软连接所链接的目录/文件。一般可以做项目的伪装,或者安全性。后面有待测试,不过这是个好办法,隐藏/添加目录url形式。不用去框架

router做任何配置。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GEEK JUMP

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值