这是我的HTML:
<fieldset>
<legend>Ways I can be contacted</legend>
<div class="error-message-list"></div>
<div class="rows">
<div class="row">
<div>content</div>
<div>content</div>
</div>
<div class="row">
<div>content</div>
<div>content</div>
</div>
</div>
</fieldset>
<p><a id="count" href="#">Couynt</a></p>
..这是我的Jquery:
<script type="text/javascript">
$(document).on({
click: function(event) {
event.preventDefault();
console.log($(this).parents().siblings('fieldset .rows div.row').length);
}
},'#count');
</script>
当我点击“Count”时,零被写入控制台。我希望这是一个2,因为在row
div中有2个div类rows
。
如果我只是在字段集上这样做,就像这样:
console.log($(this).parents().siblings('fieldset').length);
然后它会像我期望的那样返回1。
我也试过
console.log($(this).parents().siblings('fieldset .rows .row').length);
和
console.log($(this).parents().siblings('fieldset > div.rows > div.row').length);
..和许多其他组合,但我不能说它'2'!
答案 0 :(得分:3)
你误解了.siblings
的工作方式。
.siblings('fieldset .rows div.row')
将选择与选择器匹配的所有兄弟节点,即div
个带有row
类的元素,它们是.rows
和fieldset
元素的后代。
p
元素的唯一兄弟是fieldset
元素,但肯定不是div
。
您可以使用.find
来选择里面的元素 fieldset
兄弟。例如:
$(this).parent().siblings('fieldset').find('.rows div.row').length
有很多方法可以遍历/选择DOM来获取所需的信息。例如:
$(this).closest('p').prev('fieldset').find('div.row').length
答案 1 :(得分:1)
您可以尝试这样
DEMO -->
http://jsfiddle.net/EHYyk/
$(document).on({
click: function(event) {
event.preventDefault();
console.log($('fieldset .rows .row').length);
}
},'#count');
siblings()
会为您提供相邻的元素,您可以直接遍历.row
类。
答案 2 :(得分:0)
尝试减少代码http://jsfiddle.net/2PpGN/
var c = $(".rows").children(".row").length;
alert(c)