百度空间 | 百度首页 
               
 
查看文章
 
jQuery ajax callback $(this). with custom Object object this. (Public vs. Private)
2008年02月29日 星期五 11:36

建立一個新的 Object object,想搭配 jQuery 的 ajax callback 來使用時,當你需要做內容或function調用時會出現怪異的現象,和想像中的不同.主要原因是我組合了許多不同人寫的 js的不同功能 ,合併成一個大的組合,有點像我以前在做 xxx 首頁時,因為沒有像 Yahoo YUI 的編制做相關的事,於是我從網路許多不同的網站,各取所需組合成新的首頁.不過,現在的首頁雖有我之前做的影子,但事實上裡面的結構已經和我做的有些不同了.

例如:

  1. function xxxx(){}
  2. $.ajax({
  3.    url: get_url,
  4.    type: 'GET',
  5.    dataType: 'xml',
  6.    timeout: otimeout,
  7.    error: this.showerr , //work, 因為這裡的 this 還是引用的 xxxxx, OO 的 this.
  8.    success:this.callback // work,如上.
  9. });

當 ajax 回傳 this.callback 後,

如果你使用了 jQuery 來擷取資料,要搭配原來的 xxxx ,調用裡面的 function 時,一般會下
this.ooooooo(aaaaaa(i)) 之類的作法,但是,因為 jQuery 裡的 function 裡的 this 是自己的,取不到上一層的 this. 該怎麼做?

  1. xxxx.prototype.callback = function(xml) {
  2. $(xml).find('item').each(function(){
  3. var item = $(this);
  4. var title = $("title",item).text();
  5. var desc = $("description",item).text();
  6. var link = $("link",item).text();
  7. 這裡想要調用 this.aaaaa(item) 時,就會出問題.因為 jQuery 已經認為這個 this 為這個 function裡的 this. 而 this.aaaa 想要調用的是上一層 xxxx 裡的 function,就會無法正常 work.
  8. )};
  9. }

正在想怎麼解決?
因為搭配 jQuery 可以後方便的使用 ajax 來處理相關的資訊.(jQuery 的 ajax 很方便,可以有 overtime 和 success, complete 的相關功能,這在使用 ajax 的功能相當重要,主要是用來告知使用者訊息)

但遇上了Object object this. vs jQuery this. 該怎麼做?還要再想想.
如果只是單純的把資料倒出來或是配合 function 都可以很容易做到.沒有 this. 的問題.
我的狀況剛好比較特殊,大概只能從幾方便下手:
1.改變寫法,利用 function 來解決.
2.想辦法弄懂 Object object this. + jQuery this. 不同層次的調用.
3.不知有沒有範例可以看?但我一直找不到.

繼續努力搞懂,還有解決它.

苦思多日,終於先初步的最後的解決方案是(也許還有更好的方法,但先解決眼前的問題再說):

需要引用的參數多設一個相對的公有變數,如此在 function裡要引用時,就可以很簡單的呼叫公用的變數.
例如:
this.icon = img;
多設一個
o_icon = this.icon; 供 jQuery Ajax callback 回來時引用.

再來是要改寫會出現 this. 相關用法,只要遇到 this. 全都要改寫如上頭的寫法,並且修改 prototype 的寫法,或改寫成 function ,藉以互相搭配,範例改天再放.

解決這個問題之後,以後要處理相關的問題就更容易了.


类别:默认分类 | 添加到搜藏 | 浏览() | 评论 (0)
 
最近读者:
 
网友评论:
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
验证码: 请点击后输入四位验证码,字母不区分大小写
      

     

©2009 Baidu