作者neversay (子不语)
看板Ajax
标题Re: [问题] ajax 与 jquery 的使用
时间Sun Dec 21 01:15:16 2008
※ 引述《TonyQ (沉默是金)》之铭言:
: 帮原PO重新简述一下他的问题
: 1.在原页面对[tip]执行事件绑定
: 2.载入ajax page
: 发现2中 [tip]的元素 tooltip 没有work. (因为根本没有被绑订)
: 解决方案
: A 在2完成的时候针对ajax page 做[tip] tooltip 的绑定,
: (尽量不要绑到1阶段中已经绑定的元素 , 否则双重绑定可能会有後遗症)
: B 改用liveQuery 来进行步骤1的绑定 , 绑在ready上, 我会比较推崇後者.
: 写javascript , document 的文件概念 、执行的时间轴是最重要的两个项目,
: 要随时了解这条时间轴走到哪里 , 当时有哪些成员 , 并善用浏览器提供的
: break point功能 , 不然很容易陷入这样难以自行发现问题的困境.
我碰到的是类似问题,但是更诡异:
我在parent.html里面会经由ajax呼叫child.html,而child.html里面有一script
<script>
$(document).ready(function(){//do something});
</script>
问题就出在当我parent.html读入child.html之後,child.html的script没有执行,
没有动作的原因很简单,因为jQuery的$().ready是在parent.html读取完毕才会触发
的,child.html的读取完毕事件并不会触发ready事件,所以child.html里面的$().ready
完全没作用!
我现在的补救方法是把function参数化提出来,改写child.html:
<script>
var f = function(){//do something};
f();
$().ready(f);
</script>
这样就能动作了,但是我认为这不是一个好解法,我认为jQuery应该要对ready事件
触发的时机与scope做个更动,在ajax读取child.html完毕时,要触发 child.html的
ready事件,且ready事件影响范围仅有child.html之内。
目前正在想能不能在$.ajax的option里面 success:function这个参数上下手脚,
因为在success时已经有了data可以操作,不知道有没有办法对这个data下达.
trigger('ready')来触发子页面的ready事件呢?
有谁有试过的?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.135.21.8
1F:推 tn801534:我自己是用$(function(){alert("hi");});是会执行的 12/21 10:18
2F:→ tn801534:刚测试了一下ready应该也会说... 12/21 10:19
3F:推 tn801534:我猜是你子网页有写错 12/21 10:23
4F:→ neversay:子网页没写错耶,我在google上也看到很多相同的问题 12/21 10:53
5F:→ neversay:我主要的问题在於ajax动作是由jQuery UI的tabs plugin 12/21 10:53
6F:→ neversay:做出来的,所以我无权干涉ajax的呼叫方法,只好修改 12/21 10:54
7F:→ neversay:ajaxOption来客制化自己想要的效果 12/21 10:54
8F:→ neversay:或许用load或$.get会执行吧,但是tabs的ajax根本不理我 12/21 10:54