在我的Sharepoint门户网站中,我正在尝试修复列表比页面边框(自定义母版页)更宽的问题,并且当它们显示在最右侧时看起来很有趣。所以我正在编写一个jQuery函数来重置宽度。
我的功能很好,很好,它也适用于Sharepoint对话 - 但我不希望它在对话中工作!
这是我选择元素的方法。
var elements = $(".s4-wpcell-plain > div > *, #pagebody.s4-ca > div > *");
但是,如果页面在对话框中运行,我想排除匹配。现在,有一个.ms-dlgContent
样式,但它在我的选择器匹配中使用的任何元素都在上面(比如,父母的父亲等等......)。
如果没有匹配该类的前任,我如何匹配我的元素?
[更新]
嗯,谢谢你,忠实的jQuery大师们如此快速的回应。但是我尝试了你所有的技巧,并没有完全解决这个问题,所以让我解释一下(对不起,我之前没想过这个)。
以下是对话中#pagebody
div的css路径。您可以在开始时看到指定对话框的类。
html.ms-dialog body form #aspnetForm div#s4-workspace.s4-nosetwidth div#s4-bodyContainer div#ctl00_MSO_ContentDiv div#pagebody.s4-ca
这是常规页面的#pagebody
元素的css路径。
html正文形式#aspnetForm div#s4-workspace.s4-nosetwidth div#s4-bodyContainer div#ctl00_MSO_ContentDiv div#pagebody.s4-ca
所以,我需要影响主页的#pagebody
,而不是对话。请记住,我希望避免根据Sharepoint生成的GUID选择任何内容。
[编辑]
呃,对不起,在看完这些路径之后,现在我意识到我必须使用ms-dialog
而不是ms-dlgContent
。我现在就给你答案。
答案 0 :(得分:2)
试试这个:
var elements = $(".s4-wpcell-plain > div > *, #pagebody.s4-ca > div > *");
var elementsNotInDialoge = elements.filter(function() {
return !$(this).parents('.ms-dlgContent').length;
});
答案 1 :(得分:1)
您可以使用filter
var elements = $(".s4-wpcell-plain > div > *, #pagebody.s4-ca > div > *")
.filter(function() {
return $(this).closest('.ms-dlgContent').length == 0;
}
答案 2 :(得分:1)
试试这个(我假设您的.ms-dlgContent
是div):
var elements = $("div:not(.ms-dlgContent) .s4-wpcell-plain > div > *, #pagebody.s4-ca > div > *");