Ajax 板


LINE

  我有两个iframe,目前要把网页都开在其中一个frame然後再把整个body 用来replace另一个iframe的body(目的是要做pre-load的功能)。这造成了 一些iframe内页的code失效,应该是jQuery里面DOM没有跟着实际内容更新的 问题。我看到一些文章建议用delegate来bind event,不过在这个状况中甚 至无法触发。想请问这可能是什麽问题,以及如何解决。我目前的一个假定 是用来delegate event的主体如果本身是动态产生出来的可能就没效果。   code还很乱,问题的部分大致如下: jQuery(document).ready(function(){ jQuery("#test").click(function(){ alert(JSON.stringify(jQuery('a'))); ... }) })   在body整个被replace掉(#test是新产生出的,本来没有)的网页中,   上面这个会触发,但alert告诉我里面没有一个a(其实很多);它读不 到该有的元件。 jQuery(document).ready(function(){ jQuery(document).delegate("#test", "click", function(){ alert(JSON.stringify(jQuery('a'))); ... }) })   在body整个被replace掉的网页中,这个完全不触发也没错误讯息。   两者直接开出来(不在iframe中)都可以正确执行。请教板友以上问题。 --     Il Cavaliere Inesistente    http://dejavu.blogdns.org/   骑士是种一旦失去存在的意义,就会崩解消失的东西  因此他们的一生总在追求着某些事物,以维持自己的存在 如果有了存在的理由,即使是一副空的铠甲,也可以成为骑士 --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 111.253.79.103
1F:→ SanChungAndy:问题应该在你replace 那一段 07/19 00:35
  我replace的部分是写在顶层的网页中,当iframe2(每次实际开启网页的 地方)里面document.ready时会呼叫这个top的函式,这部分构造如下: $('#frame1').contents().find('body').replaceWith($('#frame2').contents() .find('body'));   参考板友来信的建议,我试了以下两种修改,还是不能执行,但是状况有一点 差异: $('#frame1').contents().find('body').html('').append($('#frame2').contents() .find('#wrapout')); 改成用这行来做iframe内容的变更,状况没有改变,click可以触发但抓不到DOM, delegate则不触发(#wrapout是body内最外层的tag)。 $('#frame1').contents().find('body').html('').append($('#frame2').contents() .find('body').html()); 改成用这行来做的话,连click也变成和delegate的状况一样完全不触发。   这个出问题的按钮包在很里面,要分离出来append可能需要一点时间...我是比 较希望用能整页一起处理的方式去replace(不然将来增加内容会很麻烦)。此外我 刚刚还做了一个实验,把.click的内容都拉出来丢进一个独立function clicks()然 後设定$("#test").attr('onclick', 'clicks()'),也就是试着让它在按钮时才呼 叫该读取的内容。不幸这个方法有浏览器差异性,在IE中可以照一开始预期的发动 onclick,但在chrome中不触发。我打算继续做其他实验...。 ※ 编辑: hermitwhite 来自: 111.246.26.243 (07/19 15:14)
2F:→ SanChungAndy:如果不用复制preload的dom改用$("body").load 载入呢 07/20 01:33
3F:→ hermitwhite:不能用load呢,因为我一方面想解决SEO问题和浏览器前 07/21 18:14
4F:→ hermitwhite:进後退问题才特别用了iframe。 07/21 18:15
  我後来发现不只是replace到不同iframe,只是从iframe里把code replace到外 面也会有一样的问题。此外还有一些神秘的现象例如某些本来不能跑的code只要在 下一行加上alert(object)结果竟然就能跑了。我对於jQuery里面呼叫物件或连结的 方式还没有很清楚的概念所以也不太有办法去处理。目前我回避这些问题的方法基 本上是尽量把event写进html里(onclick='clicks("eventName")'之类;不能在 javascript里面用.attr去加,有些浏览器这样搬移後还是出问题),然後在被搬移 进的页面里再用script把clicks()重新指向到原始的iframe里面对应的function。 目前看来这麽做没有问题。 ※ 编辑: hermitwhite 来自: 114.26.165.44 (07/26 14:14)







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:BabyMother站内搜寻

TOP