我们使用SharePoint 2010,JavaScript和jQuery来执行简单的功能。用户通过复选框选择适用于其情况的文档。我们将选择存储在一个数组中,然后存储在localStorage字符串对象中。然后,当他们到达另一个屏幕并单击“过滤器”按钮时,我们将字符串解析回一个数组以“隐藏”用户不感兴趣的文档。当我使用仅包含html,JavaScript的测试页时,和jQuery,存储和隐藏工作。在实际的SharePoint页面上,localStorage正常工作,jQuery选择器似乎找到要隐藏的正确表行,但是当脚本完成时,不会隐藏任何内容。最初,通过jQuery toggle()函数尝试“隐藏”,这也无法工作。
//THIS updates LOCALSTORAGE AFTER EACH CHECKBOX CLICK.
$(document).ready(function(){
var str1=$("[name='aspnetForm']").attr("action");
var n1=str1.indexOf("NewDocSet");
var n=str1.indexOf("ProjectManagement");
if (n!=-1 && n1!=-1){
$(":checkbox").click(function () {
var arrNot=[];
//create an array of checkboxes NOT checked and use this to hide the tr's
$("input:checkbox").each(function () {
arrNot.push($(this).parent().parent().parent().find('nobr').text());
}); //each checkbox
$("input:checkbox:checked").each(function () {
var item = $(this).parent().parent().parent().find('nobr').text()
var index = $.inArray(item, arrNot);
arrNot.splice(index, 1);
}); //each checked
localStorage.setItem("key", arrNot);
}); //checkbox .click
} // if statement
//THIS TRIES TO GET LOCALSTORAGE FROM ABOVE AND HIDE TR ELEMENTS WHOSE A ELEMENT TEXT VALUES ARE NOT PART OF ARRAY From PAGE 1.
$("#filter").click(function () {
var arr1 = localStorage.getItem("key").split(',');
$(".s4-itm-cbx").each(function () {
var attrText2 = $.trim($(this).attr("title"));
if (attrText2 |= ""){
var match = $.inArray(attrText2, arr1);
if (match == -1){
$(this).closest('tr').hide();
}
}
}); //Each matched tag
}); //click function
}); //END READY
我尝试了 SPArchaeologist 的建议和其他调试技巧。现在看来,SharePoint生成的客户端脚本正在刷新之后我的显示/隐藏/更改背景颜色。通过在javascript中添加警报,我实际上可以看到列表更改,然后当我的脚本完成后,另一个客户端脚本正在恢复列表。知道什么是重置列表显示?以及如何覆盖或取消它?