SharePoint列表排序/筛选后,jQuery DOM更改消失

时间:2017-02-08 16:11:22

标签: jquery sorting dom sharepoint sharepoint-2013

我已将jQuery代码添加到SharePoint脚本编辑器Webpart,它采用文档名称(例如, my_doc.pdf )将域添加到其中以创建完整路径,然后包装{{ 1}}标记下一个单元格上的文本。这在页面加载时非常有效,但在排序或过滤列表时,所有DOM更改都会消失。这是代码(我将<a>替换为$(document).ready):

_spBodyOnLoadFunctionNames.push

提前多多感谢。

2 个答案:

答案 0 :(得分:0)

评论的文字太长了,所以我们走了。

这是一篇很好的文章,其中包含有关JSLink https://code.msdn.microsoft.com/office/Client-side-rendering-code-0a786cdd的示例 它非常简单直接 - 不需要脚本编辑器或其他奇怪的东西。 假设您想要更改“MyURL”字段渲染。

// myrendering.js
(function () { 

    var ctx = {}; 
    ctx.Templates = {}; 
    ctx.Templates.Fields = { // you can override many things, but in this case we are going for the Fields
        // Apply the new rendering for MyURL field on List View 
        // But you can add as many fields as you like
        "MyURL": { "View": myUrlFieldTemplate }
    }; 

    SPClientTemplates.TemplateManager.RegisterTemplateOverrides(ctx); 

})();
// This function provides the rendering logic for list view 
// Instead of default SharePoint url field you will get whatever you return from this function
function myUrlFieldTemplate(ctx) {  
    // put debugger here to see whats going on - it will help you alot  
    var myUrl = ctx.CurrentItem[ctx.CurrentFieldSchema.Name]; // get field value
    return "<a target='_blank' href='" + myUrl + "'>Im JSLink rendered field!</a>";
    // or you can return whatever you want, for example
    // return "<button>Im button now!</button>";
    // and your field "MyURL" will become a button in a list view
} 
//end

答案 1 :(得分:0)

显然,保持更改的一种方法是在每hashchange之后调用该函数:

window.addEventListener("hashchange", myFunction, false);