2011-10-26 187 views
0

我有一個列表視圖的SharePoint Web部件頁面,該列表視圖被分組並且默認爲「摺疊」(非常像基本切換)。 SharePoint生成自己的JavaScript來處理最初的單擊操作,然後擴展頁面區域並動態地將新內容寫入該區域。問題是jQuery無法在點擊後立即訪問新內容(它需要完成加載)。我的想法是添加第二jQuery點擊功能的切換鏈接,並以某種方式等待新的內容添加之前發生任何事情,但我不知道如何確定何時動態內容完成加載...如何通過jQuery訪問動態生成的頁面內容?

 //bind a 2nd additional onclick handler via jquery to these items 
     $('td.ms-gb').children('a').click(function() 
      { 
       //give the clicked item a border for visual identification 
       $(this).css("border","1px solid cyan"); 

       //delay this function until the sharepoint onclick handler finishes loading new content 
       $('TD.ms-vb-icon').children('a').each(function(index) 
        { 
         //give each item a border for visual identification 
         $(this).css("border","1px solid red"); 
         //perform more jquery on each item 

        } 
       );   

      } 
     ); 

回答

0

我能想到的唯一的事情就是設置與$.ajaxSuccess()http://api.jquery.com/ajaxSuccess/註冊並響應第一AJAX請求(點擊)之後完成

它的hackish後,再點擊一下處理,但如果代碼被提取的動態內容沒有回調,沒有太多選擇。

+0

我不知道$ .ajaxSuccess()是否適用於未由jQuery函數調用的AJAX。 – gertas

+0

@gertas:我不這麼認爲,但SharePoint的代碼是用jQuery編寫的 –

+0

AFAIK SharePoint沒有發佈jQuery,我認爲你的意思是「JScript」。 [2010年來源](http://blogs.msdn.com/b/publicsector/archive/2010/06/28/does-jquery-ship-with-sharepoint-2010-and-why-you-should-be-using -an-ajax-cdn.aspx) – gertas

1

的常用技術來解決這樣的問題,就是用

的setTimeout(函數,timeoutInMs)

,並試圖找到在功能上的新內容,如果失敗,請重新啓動超時,直到你找到內容

這裏有一個的jsfiddle來說明: http://jsfiddle.net/Dhww2/

+0

是的,我想過,但我對JavaScript不太好。 –

+0

所以,這是可能的... setTimeout(jQuery函數,timeoutInMs)? –

0

你打算如何處理加載的contnent?只是風格,並抓住另一個點擊?

在這種情況下,使用自定義樣式的樣式表和用於捕獲(單擊)進一步加載的元素的事件的jQuery的live函數。如果您的點擊跟蹤代碼較早註冊

更新評論

$('TD.ms-vb-icon a').live('click', function(ev) { 
    $(this).attr('name','value'); 
} 

可能無法正常工作。如果是這樣,請嘗試mouseover事件。

+0

與加載的內容,我只需要追加一個名稱屬性到錨標記。 –

+0

好的,你最終想跳到這些指定的錨? – gertas

+0

nope,只需要運行一些jquery爲每個返回項目的每個錨定標籤添加一個name屬性。 –

相關問題