假设我有一个假设的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'元素,直到#start div结束为止。
如果有人能指出我正确的做法,我将不胜感激? (这可能是我不熟悉的一些jQuery条件)
答案 0 :(得分:3)
这应该这样做:
$('#start [name]').not('#start .checkpoint [name]')
虽然我不知道这有多高效......
旁注:input
元素应位于<form>
s。
答案 1 :(得分:0)
这是我唯一能想到的HTML代码:
$('#start').find('input[name]').each(function()
{
if(!$(this).parents('div[id!=start]').hasClass('checkpoint'))
{
$(this).css('background-color', 'green');
}
});
jsFiddle的演示。