2016-05-13 40 views
0

HTML:选择元素,而无需指定其中的容器类和最后一个

<div class="validation-summary-errors text-danger"> 
    <span ng-show="Mail.To.$error.required && !Mail.To.$pristine">To field is required</span> 
    <span ng-show="Mail.To.$error.required && !Mail.To.$pristine">To field is required 2</span> 
    <span ng-show="Mail.Subject.$error.required && !Mail.Subject.$pristine">Subject field is required</span> 
    <span ng-show="Mail.Subject.$error.minlength && !Mail.Subject.$pristine && !focusSubject">Subject length must be at least 3</span>   
</div> 

通过角HTML

<div class="validation-summary-errors text-danger"> 
    <span ng-show="Mail.To.$error.required &amp;&amp; !Mail.To.$pristine" class="">To field is required</span> 
    <span ng-show="Mail.To.$error.required &amp;&amp; !Mail.To.$pristine" class="">To field is required 2</span> 
    <span ng-show="Mail.Subject.$error.required &amp;&amp; !Mail.Subject.$pristine" class="ng-hide">Subject field is required</span> 
    <span ng-show="Mail.Subject.$error.minlength &amp;&amp; !Mail.Subject.$pristine &amp;&amp; !focusSubject" class="ng-hide">Subject length must be at least 3</span>   
</div> 

CSS生成:

.validation-summary-errors > span:not(.ng-hide):last-child { 
    display: block; 
    margin-bottom: 20px; 
} 

问题: 这个CSS选择跨度其中没有ng-hide类并且是同一时间的最后一个孩子。 需要: 选择其中没有隐藏类和最后一个孩子的跨度,即只有第二跨度。 如果存在错误,请仅使用CSS或其他方式显示一些使用填充的块错误。

+2

不可能与CSS ..没有'x类的'选择器。 –

+0

你打算如何确定显示哪条错误消息?为什么不能向包含要显示的错误消息的元素添加一个类?当然,这是可能的,比你想要做的更直观。 – hungerstar

+0

@hungerstar,它通过ng-show = boolExpression指令来执行angularjs。建议您的解决方案做得更好。 – uda

回答

0

正如评论中提到的那样,使用CSS只是非常困难。作为您正在尝试做的一种替代方法,您可以通过选择类别为ng-hide的第一个元素来尝试反过来,因为选择器只能选择元素的前向,因此更容易一些:

.validation-summary-errors > :not(.ng-hide) + .ng-hide

你想现在就选择元素,这意味着你可以排序的前后翻页你的风格后,立即将选择元素..上一个上一个,等它使用margin-top,而不是margin-bottom

这可能不会给你正是你想要的,这取决于你究竟如何尝试风格你的元素,但它可能工作。

相关问题