我在使用jquery获取兄弟元素时面临一些问题。我会尽力解释。
以下是我目前正在处理的HTML ..
<p class="paraclass1" id="amazing1">
<span class ="pascal1">
<div class='pascal'>
<INPUT id= "chk1" value="on" type="checkbox" />
</div>
</span>
</p>
<p>
<label class='lblclass'>this is a label </>
</p>
我想要做的是导航并找到第二个p标签中存在的所有子项(现在只有标签存在)。以下是我正在处理的Jquery代码..
$('#chk1').click(function(){
alert($(this).parents('p#amazing1').next().children().length)
// alert($('#chk1').parent().parent().attr('class'));
});
http://jsfiddle.net/gj1118/vWQxD/5/
任何帮助将不胜感激。
由于
修改 我现在正在尝试获取第二个p标签元素内部的标签文本,并且它不起作用....是否有我遗漏的东西..?我还没有改变小提琴,但由于它只是一个样本,因为标签没有被使用,我为了简单起见让它保持原样
答案 0 :(得分:11)
你的jQuery应该可以正常工作。这种情况下的问题是你的标记。 p
element只能包含“phrasing content”。 div
元素不属于短语内容,因此浏览器会尽力通过移动来处理您的标记。
Chrome只会移动p
元素,成为div
的上一个兄弟。
要解决此问题,您需要更改标记。您最好的选择可能是将p
元素更改为另一个div
。请参阅updated fiddle。
旁注。您可以考虑将.parents()
来电更改为.closest()
来电。如果.parents()
方法与选择器匹配,则它可以返回多个元素。在这种情况下,这是不可能的,但为了可维护性,这可能是一个很好的改变:
$(this).closest('#amazing1').next().children().length