我正在使用Sharepoint 2010构建一个网站,我在内容编辑器Web部件中创建了一个时髦的jQuery幻灯片(使用视图HTML代码编辑选项)。效果很好,除非我想编辑jQuery在编辑屏幕上运行的Web部件并导致各种各样的破坏。
我的HTML基本上是这样的:
<div class="slideshow">
<div class="slide">Slide 1</div>
<div class="slide">Slide 2</div>
</div>
我的jQuery是这样的:
$('.slideshow').each(function(){
// Do the magic
});
在编辑时我是否可以依赖Sharepoint 2010 Web部件中的类或ID,以防止jQuery选择器看到我的幻灯片?像这样:
$('div:not(.sharepoint-edit-block) .slideshow').each(function(){
// Do the magic
});
答案 0 :(得分:4)
我没有使用其他答案中提到的隐藏输入ID,但它们存在并且也可以正常工作。
假设有一个发布页面,我总是使用以下内容。
$(document).ready(function(){
// Only run if page is not in Design Mode
var inDesignMode = document.forms[MSOWebPartPageFormName].MSOLayout_InDesignMode.value;
if (inDesignMode !== "1")
{
$('.slideshow').each(function(){
// Do the magic
});
}
});
答案 1 :(得分:1)
在维基页面上,您可以检查ID为_wikiPageMode
的元素,如果您处于编辑模式,则value
属性为Edit
,否则为空(空字符串)。
如果您不在维基页面上,则可以查找ID为MSOLayout_InDesignMode
的表单元素,如果您处于编辑模式,则value
属性将为1
否则它将为空(空字符串)。 Wiki页面也有这个标签,但是当wiki页面处于编辑模式时,它的值不会设置为1.Non-wiki页面不会有_wikiPageMode
标签,因此你的选择器将为空(一个数组)没有结果),对val()
的调用将是undefined
// technique for wiki pages
$("#_wikiPageMode").val() // "Edit" or ""
// technique for non-wiki pages
$("#MSOLayout_InDesignMode").val() // "1" or ""