Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/454.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript SharePoint 2013列表-项目的工具提示_Javascript_Jquery_Sharepoint_Sharepoint 2013 - Fatal编程技术网

Javascript SharePoint 2013列表-项目的工具提示

Javascript SharePoint 2013列表-项目的工具提示,javascript,jquery,sharepoint,sharepoint-2013,Javascript,Jquery,Sharepoint,Sharepoint 2013,我们有很多列的大型SharePoint列表。我们的用户忘记了他们正在查看的单元格,因为在滚动标题后,标题消失了(无法像Excel中那样冻结标题) 我们希望尝试向单元格项添加工具提示,以便当它们悬停在单元格项上时,将显示带有列名的工具提示 以前有人试过这样做吗 我有以下代码,它最初在加载时工作,但在用户排序、筛选或将列表切换到编辑模式后停止工作: <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/

我们有很多列的大型SharePoint列表。我们的用户忘记了他们正在查看的单元格,因为在滚动标题后,标题消失了(无法像Excel中那样冻结标题)

我们希望尝试向单元格项添加工具提示,以便当它们悬停在单元格项上时,将显示带有列名的工具提示

以前有人试过这样做吗

我有以下代码,它最初在加载时工作,但在用户排序、筛选或将列表切换到编辑模式后停止工作:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js"></script>
<script type="text/javascript">
jQuery(
function() 
{
    $('td').hover
    (
    function() 
    {
        var idx = jQuery(this).parent().children().index(jQuery(this));
        jQuery(this).attr('title',jQuery(this).parent().parent().parent().find('th').eq(idx).text());
        jQuery('div.ms-core-brandingText').html(jQuery(this).parent().parent().parent().find('th').eq(idx).text());
    }
    )
}
);                         
</script>

jQuery(
函数()
{
$('td')。悬停
(
函数()
{
var idx=jQuery(this.parent().children().index(jQuery(this));
jQuery(this).attr('title',jQuery(this).parent().parent().parent().find('th').eq(idx).text());
jQuery('div.ms-core-brandingText').html(jQuery(this.parent().parent().parent().find('th').eq(idx.text()));
}
)
}
);                         

您的代码停止工作,因为SharePoint重新加载列表内容。将客户端脚本添加到SharePoint页面时,这是一个常见问题

首先,您实际上应该能够使用冻结的标题渲染视图。是的,它不是现成的,但是有第三方数据表工具可用


另一个选项是通过客户端呈现选项包含代码。这是一个广泛的话题,所以第一步可能是用谷歌搜索它。

好的,更进一步,使用CSR而不仅仅是jQuery。这可以工作,但需要手动指定每个字段。正在寻找将其应用于视图中每个字段的方法

<script type="text/javascript">
    SPClientTemplates.TemplateManager.RegisterTemplateOverrides({
        Templates: {
            Fields: {
                'Comments': {
                    'View': function (ctx) {
                        return String.format('<span title="{0}">{1}</span>', this.FieldTitle, ctx.CurrentItem.Comments);
                    }
                },
                'Name': {
                    'View': function (ctx) {
                        return String.format('<span title="{0}">{1}</span>', this.FieldTitle, ctx.CurrentItem.Name);
                    }
                }
            }
        }
    });

SPClientTemplates.TemplateManager.RegisterTemplateOverrides({
模板:{
字段:{
“评论”:{
“视图”:函数(ctx){
返回String.format(“{1}”,this.FieldTitle,ctx.CurrentItem.Comments);
}
},
“姓名”:{
“视图”:函数(ctx){
返回String.format(“{1}”,this.FieldTitle,ctx.CurrentItem.Name);
}
}
}
}
});

当应用筛选/排序时,列表视图会重新加载,因此会出现这种情况

如何在SharePoint 2013中悬停列表项 以下功能可用于在SharePoint 2013中悬停列表项单元格:

function hoverListItems()
{
  $('tr.ms-itmhover td').hover(
    function() {
       var $td = $(this);
       var $th = $td.closest('table').find('th').eq($td.index());
       $td.attr('title',$th.text());
    }
  );  
}
由于在SharePoint 2013中,客户端呈现(
CSR
)是默认呈现模式,因此下面的示例演示了如何使用
OnPostRender
事件注册
hoverListItem
函数

SPClientTemplates.TemplateManager.RegisterTemplateOverrides({
   OnPostRender: function() { 
       hoverListItems(); 
   }
});
注意:使用指定的技术列表项悬停在 已应用排序/筛选

工具书类 工具提示解决方法:

我一直使用的解决方案是一个简单的非html解决方案。我只是创建一个链接到一个项目;插入它自己的地址(这样它就不会去任何地方);然后在“新建链接”选项卡下,在“说明”框中键入所需的提示

保存页面,然后尝试在新链接上滑动鼠标,瞧


希望对你有所帮助

谢谢,你说得对。看起来HTML正在重新生成,而我的代码没有被重新应用。我将研究客户端渲染主题。我们找不到用于冻结邮件头的第三方工具-您知道吗?这里有一个例子:这些工具不是特定于SharePoint的。