如果没有与类匹配的前置项,则选择jQuery

如果没有与类匹配的前置项,则选择jQuery,jquery,css,sharepoint,Jquery,Css,Sharepoint,在我的Sharepoint门户中,我试图解决一个问题,即列表比页面边框更宽,自定义母版页显示在最右侧时看起来很有趣。因此,我正在编写一个jQuery函数来重置宽度 我的函数工作得很好,它在Sharepoint对话中也可以工作——但我不希望它在对话中工作 下面是我选择元素的方法,它很有效 var elements = $(".s4-wpcell-plain > div > *, #pagebody.s4-ca > div > *"); 但是,如果页面在对话中运行,我想排除

在我的Sharepoint门户中,我试图解决一个问题,即列表比页面边框更宽,自定义母版页显示在最右侧时看起来很有趣。因此,我正在编写一个jQuery函数来重置宽度

我的函数工作得很好,它在Sharepoint对话中也可以工作——但我不希望它在对话中工作

下面是我选择元素的方法,它很有效

var elements = $(".s4-wpcell-plain > div > *, #pagebody.s4-ca > div > *");
但是,如果页面在对话中运行,我想排除匹配。现在,有了一个.msdlgcontent样式,但它远远超过了,比如,parent的parent,parent的parent,等等。。。我在选择器匹配中使用的任何元素

如果没有与该类匹配的前置类,如何匹配我的元素

[更新]

好的,谢谢你,忠实的jQuery大师们,感谢你如此快速的响应。但是我尝试了你所有的技巧,但效果并不理想,所以让我再解释一下,很抱歉我以前没有想到这一点

下面是对话中pagebody div的css路径。您可以看到在开始时指定对话框的类

html.ms-dialog body forms网络表单divs4-workspace.s4-nosetwidth divs4 body container divctl00\u MSO\u ContentDiv divpagebody.s4-ca

这是常规页面的pagebody元素的css路径

html正文表单网络表单divs4-workspace.s4-nosetwidth divs4 body container divctl00\u MSO\u ContentDiv divpagebody.s4-ca

所以,我只需要影响主页的页面主体,而不是对话。请记住,我希望避免根据Sharepoint生成的GUID选择任何内容

[编辑]

呃,对不起,在查看了这些路径之后,现在我意识到我必须使用ms dialog而不是ms dlgContent。现在我来标记答案。

试试这个:

var elements = $(".s4-wpcell-plain > div > *, #pagebody.s4-ca > div > *");

var elementsNotInDialoge = elements.filter(function() {
    return !$(this).parents('.ms-dlgContent').length;
});
试试这个:

var elements = $(".s4-wpcell-plain > div > *, #pagebody.s4-ca > div > *");

var elementsNotInDialoge = elements.filter(function() {
    return !$(this).parents('.ms-dlgContent').length;
});
你可以用

你可以用


试试这个,我假设您的.ms dlgcontenti是一个div:


试试这个,我假设您的.ms dlgcontenti是一个div:


这个问题也应该标记为CSS。这个问题也应该标记为CSS。
var elements = $("div:not(.ms-dlgContent) .s4-wpcell-plain > div > *, #pagebody.s4-ca > div > *");