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