C#nth-child逻辑测试

时间:2014-12-16 20:17:25

标签: c# css css3 dom

我一直致力于自己的无头浏览器实现,我觉得我正在弄乱我的n-child选择器逻辑。给定一个元素并且它在兄弟组中的基于0的位置是否有一个简单的单行表达式来查看该元素是否属于结果集?

   public bool Evaluate(HTMLElement element)
   {
        if (element.parentNode == element.ownerDocument)
            return false;

        List<Element> children = element.Parent.Children
            .Where(e => e is Element)
            .Cast<Element>()
            .ToList();
        int index = children.IndexOf(element);
        bool result = (an + b test here);
        return result;
   }

目前,基于对(a)和(b)的0值的测试,我有一套复杂的分支逻辑,我怀疑我使它变得比它需要的更复杂。

1 个答案:

答案 0 :(得分:1)

如果我理解正确,您需要确定n是否存在,index = a*n + b对于某些固定ab }。

bool result = (a == 0) ? b == index : (Math.Abs(index - b) % Math.Abs(a)) == 0;

如果a为0,则index必须为b。否则,a必须平均分配ib之间的差异。

当然,如果不允许a为负值,则可以跳过Math.Abs(a)来电。