获取元素类型

时间:2011-06-12 23:47:43

标签: jquery html dom tree find

假设我有一个假设的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条件)

2 个答案:

答案 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的演示。