簡體   English   中英

如何通過jQuery訪問動態生成的頁面內容?

[英]How to access dynamically-generated page content via jQuery?

我有一個SharePoint Web部件頁,其中的列表視圖已分組並且默認為“折疊”(非常類似於基本切換)。 SharePoint生成自己的JavaScript以處理初始單擊操作,然后該JavaScript擴展頁面區域並將新內容動態寫入該區域。 問題是jQuery在單擊后無法立即訪問新內容(它需要完成加載)。 我的想法是將第二個jQuery click函數添加到切換鏈接,並以某種方式等待新內容添加,然后再進行其他操作,但是我不確定如何確定動態內容何時完成加載...

        //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

                   }
                );         

            }
        ); 

解決此類問題的常用技術是使用

setTimeout(function,timeoutInMs)

並嘗試在功能中查找新內容,如果失敗,請重新啟動超時,直到找到內容為止

這是一個jsFiddle來說明: http : //jsfiddle.net/Dhww2/

我唯一想到的就是設置另一個在$.ajaxSuccess() http://api.jquery.com/ajaxSuccess/中注冊的單擊處理程序,並在第一個AJAX請求(單擊后)完成后做出響應

這有點駭人聽聞,但是如果獲取動態內容的代碼沒有回調,則沒有太多選擇。

您要如何處理已加載的內容? 只是樣式並吸引其他點擊?

在這種情況下,請使用樣式表進行自定義樣式,並使用jQuery的live函數捕獲(單擊)進一步加載的元素的事件。

更新評論

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

如果您的點擊跟蹤代碼較早注冊,則可能無法使用。 如果是這樣,請嘗試使用mouseover事件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM