我有一个无序列表,其中包含未知数量的列表项,顺序未知。
我需要找到类为.colspan
的列表项,看看它后面的项是否也有这个类,然后根据后面的类添加一个类。
如果只有1,则给予li
另一个类1-col
。
如果有两个在一排,2-col
。
如果有三个在一排,3-col
。
我一次不需要超过三个。
例如...
之前:
<ul>
<li class="colspan">content</li>
<li class="other">content</li>
<li class="colspan">content</li>
<li class="colspan">content</li>
<li class="other">content</li>
<li class="colspan">content</li>
<li class="colspan">content</li>
<li class="colspan">content</li>
<li class="other">content</li>
</ul>
之后:
<ul>
<li class="colspan 1-col">content</li>
<li class="other">content</li>
<li class="colspan 2-col">content</li>
<li class="colspan 2-col">content</li>
<li class="other">content</li>
<li class="colspan 3-col">content</li>
<li class="colspan 3-col">content</li>
<li class="colspan 3-col">content</li>
<li class="other">content</li>
</ul>
我假设我以某种方式使用.next()
?然后,当然,.addClass()
。我很擅长这个。试图弄清楚如何应用1-col
、2-col
、3-col
是一个挑战。
任何帮助将不胜感激!
8条答案
按热度按时间kx5bkwkv1#
这将工作(使用nextUntil()使其非常简洁):
它也不限制可能遇到的colspan的数量,并且不使用示例类“other”来匹配。(如果它没有colspan类,则匹配)。
6fe3ivhb2#
一种可能性是使用一个递归函数来计算
colspan
类中下一个元素的数量。迭代所有的colspan
,检查.prev
元素是否是colspan
。如果是,则将类名设置为前一个元素的-col
类,否则使用当前colspan
(这将是任何colspan
系列中的第一个)调用递归函数:fnvucqvd3#
下面是一个演示您的要求。我所做的是创建一个全局变量,然后检查类
colspan
并动态添加该类qnzebej04#
给你
ubbxdtey5#
如果你的
colspan
LI中有任何分隔符,比如other
类LI,那么检查它,你可以通过使用prevUntil
和nextUntil
来做到这一点:无
prevUntil
和nextUntil
kpbpu0086#
就像这样:
qqrboqgw7#
我认为这应该可以解决问题:
gcmastyq8#
首先,有效的CSS类名不能以number开头。所以我会用后缀。
col-1
非jQuery解决方案:https://plnkr.co/edit/HXfeTJVFlbYI5C2om79l?p=preview
如果只想在必要时更新类列表: