Получение типов элементов - PullRequest
1 голос
/ 13 июня 2011

Предположим, у меня есть гипотетический 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.

Буду признателен, если кто-нибудь подскажет мне правильный подход к этому? (возможно, это какое-то условие jQuery, с которым я не знаком)

Ответы [ 2 ]

3 голосов
/ 13 июня 2011

Это должно сделать это:

$('#start [name]').not('#start .checkpoint [name]')

хотя я не знаю, насколько это эффективно ...


Примечание: input элементы должны быть внутри <form> с.

0 голосов
/ 13 июня 2011

Это единственное, что я могу придумать с вашим HTML-кодом:

$('#start').find('input[name]').each(function()
{    
    if(!$(this).parents('div[id!=start]').hasClass('checkpoint'))
    {
        $(this).css('background-color', 'green');
    }
});

Демо на jsFiddle .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...