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

Javascript 如何通过jQuery访问动态生成的页面内容?,javascript,jquery,sharepoint,Javascript,Jquery,Sharepoint,我有一个SharePoint web部件页面,其中的列表视图被分组并默认为“折叠”(非常类似于基本切换)。SharePoint生成自己的JavaScript来处理初始的单击操作,然后扩展页面区域并将新内容动态写入该区域。问题是jQuery无法在单击之后立即访问新内容(它需要完成加载)。我的想法是在toggle链接中添加第二个jQuery click函数,并在其他任何事情发生之前等待新内容的添加,但我不确定如何确定动态内容何时完成加载 //bind a 2nd additional

我有一个SharePoint web部件页面,其中的列表视图被分组并默认为“折叠”(非常类似于基本切换)。SharePoint生成自己的JavaScript来处理初始的单击操作,然后扩展页面区域并将新内容动态写入该区域。问题是jQuery无法在单击之后立即访问新内容(它需要完成加载)。我的想法是在toggle链接中添加第二个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

                   }
                );         

            }
        ); 

我唯一能想到的是设置另一个单击处理程序,该处理程序使用
$.ajaxSuccess()
注册,并在第一个AJAX请求(单击后)完成后响应


这是一种黑客行为,但如果获取动态内容的代码没有回调,则没有太多选项。

解决此类问题的一种常见技术是使用

setTimeout(函数,timeoutims)

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

下面是一个JSFIDLE来说明:

您将如何处理已加载的内容?只是设计风格,然后再点击一次

在这种情况下,使用样式表进行自定义样式设置,并使用jQuery函数捕获(单击)进一步加载的元素的事件

更新以供评论

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

如果单击跟踪代码较早注册,则可能无法工作。如果是这样,请尝试使用
mouseover
事件。

我想知道,$.ajaxSuccess()是否适用于未被jQuery函数调用的AJAX。@gertas:我认为不适用,但SharePoint的代码是用jQueryAFAIK编写的SharePoint不提供jQuery,我认为您的意思是“JScript”。现在是MOSS2007,所以SharePoint“切换”代码没有使用jQuery。对于加载的内容,我只需要在锚标记上附加一个名称属性。好的,那么你最终想跳转到这些命名锚?不,只需要运行一些jquery,就可以将name属性附加到每个返回项的每个锚标记上。。。单击展开,新内容将加载到下面的空白处。我只需要将name属性附加到加载的每个项目的锚标记上。但我不知道如何编写jquery来查找加载的项。是的,但我试图理解这些“name”属性的用途。如果加载的内容可能会收到另一次单击,那么您可以通过
live
捕获它,并在事件处理程序中填充缺少的“名称”。甚至“mouseenter”或“focus”都可以使用。是的,我考虑过,但我不太擅长JavaScript。那么,这有可能吗。。。setTimeout(jQuery函数,timeoutims)?