我有一个脚本,它计算无序列表中的项目数,并将项目拆分为创建两个单独的列表,但是这个脚本运行的站点正在将其许多列表更改为定义列表,每个项目都有一个<dt>和<dd>元素。是否有一种方法可以找到<dt>及其子<dd>,并将它们作为一个单一元素来处理。这样我就能找到并数每一行
<dl>
<dt>Title 1</dt><dd>Item 1</dd>
<dt>Title 2</dt><dd>Item 2</dd>
</dl>作为一个单一的实体?
编辑
这是当前为我的列表项目工作的脚本,作为对我试图实现的目标的一些指示。
$(document).ready(function() {
$(function(){
var $bigList = $('#bigList'),
number = Math.round(($("li").size())/2),
group;
while((group = $bigList.find('li:lt(' + number + ')').remove()).length){
$('<ul/>').append(group).appendTo('body');
}
});
});发布于 2013-10-31 14:58:00
大概在下面吧,我想。您可能需要修改切片函数,以获得上半部分,而不是前半部分,并可能将ceil更改为地板(舍入而不是向上),但这是一个很好的起点。
$('#list2').append(
$("#list1 > *").slice(0,
Math.ceil($('#list1 dt').length/2) * 2
)
);http://jsfiddle.net/uKmJn/4/
发布于 2013-10-31 14:09:41
您可以使用适当的选择器来完成此操作:
$("dt + dd").length不过,请注意,您只选择跟随一个dd的每个dt。因此,这对计数是有益的,但如果您试图应用样式或动画化dt和dd,则无法实现您的预期效果。但是,只需为另一个用例做另一个选择。
发布于 2013-10-31 14:16:43
基本上,您需要计算dl中的特定标记,即使用getElementsByTagName()的dt或dd。
使用以下方法:
<dl id=dl1>
<dt>Title 1</dt><dd>Item 1</dd>
<dt>Title 2</dt><dd>Item 2</dd>
<dt>Title 3</dt><dd>Item 3</dd>
<dt>Title 4</dt><dd>Item 4</dd>
</dl>
<button onClick="alert(document.getElementById('dl1').getElementsByTagName('dt').length);">count_items</button>检查这个演示
https://stackoverflow.com/questions/19708595
复制相似问题