我有一个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
}
);
}
);
答案 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
事件。