假设我有一个假设的html布局,如下所示(虽然假设,但我正在实现类似的东西,但为了这个问题,我已经简化了它):
<div id='start' class='checkpoint'>
<ul>
<li><input name='need_this'/></li>
<li><input name='need_also'/></li>
<li>
<div id='stop' class='checkpoint'>
<ul>
<li><input name='ignore_this' /></li>
</ul>
</div>
<li>
<div>
<div><input name='need_again' /></div>
</div>
</li>
</ul>
<input name='need_aswell' />
</div>我想要做的是,从$('#start')开始,获取所有具有'name‘属性的元素,除非它们存在于一个新的检查点类中。虽然我熟悉.find()和.nextUntil(),但我的理解是,当它们逐步读取html时,会在中途遇到'checkpoint‘类时立即停止?我想搜索所有'.checkpoint‘元素,直到#start div结束。
如果有人能告诉我这件事的正确方法,我将不胜感激?(可能是一些我不熟悉的jQuery条件)
发布于 2011-06-13 07:59:38
这应该可以做到:
$('#start [name]').not('#start .checkpoint [name]')虽然我不知道这有多有效。
附注:input元素应该在<form>中。
发布于 2011-06-13 08:02:16
对于您的HTML代码,这是我唯一能想到的:
$('#start').find('input[name]').each(function()
{
if(!$(this).parents('div[id!=start]').hasClass('checkpoint'))
{
$(this).css('background-color', 'green');
}
});在jsFiddle上演示。
https://stackoverflow.com/questions/6325491
复制相似问题