如何通过jQuery访问动态生成的页面内容?

时间:2011-10-26 16:49:50

标签: javascript jquery sharepoint

我有一个SharePoint Web部件页面,其中列表视图已分组并默认为“已折叠”(非常类似于基本切换)。 SharePoint生成自己的JavaScript来处理初始单击操作,然后扩展页面区域并动态地将新内容写入该区域。问题是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

                   }
                );         

            }
        ); 

3 个答案:

答案 0 :(得分:1)

解决此类问题的常用技巧是使用

  

setTimeout(function,timeoutInMs)

并尝试在函数中查找新内容,如果失败重新启动超时,直到找到内容

这是一个jsFiddle来说明: http://jsfiddle.net/Dhww2/

答案 1 :(得分:0)

我唯一能想到的是设置另一个向$.ajaxSuccess() http://api.jquery.com/ajaxSuccess/注册的点击处理程序,并在第一个AJAX请求(点击后)完成后作出响应

这是hackish,但如果获取动态内容的代码没有回调,则选项不多。

答案 2 :(得分:0)

你打算怎么做加载的contnent?只是风格并抓住另一次点击?

在这种情况下,使用样式表进行自定义样式,使用jQuery的live函数来捕获(单击)更多已加载元素的事件。

更新评论

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

如果您的点击跟踪代码先前注册,则可能无效。如果是,请尝试mouseover事件。