Использование next () x количество раз с jQuery - PullRequest
6 голосов
/ 07 октября 2011

Какой простой способ выполнить итерацию x раз, используя next() (применяя одну и ту же функцию каждый раз)?

Я работаю в Sharepoint и имею ограниченный контроль над HTML;что я могу сделать, это найти элемент по его идентификатору, отследить ближайший <td>, hide() его, а затем перейти к следующему (я не хочу все <td>, только около 7или 8 подряд).

Приведенный ниже код работает, но он не так хорош.

$("#my-easily-identifiable-id").closest("td").hide();
$("#my-easily-identifiable-id").closest("td").next().hide();
$("#my-easily-identifiable-id").closest("td").next().next().hide();
$("#my-easily-identifiable-id").closest("td").next().next().next().hide();
[ ... etc ... ]

Какой лучший способ сделать это?

Спасибо

PS: добавлена ​​ скрипка (гений)

Ответы [ 4 ]

9 голосов
/ 07 октября 2011

Использование .nextAll() + .andSelf() с .slice().

$("#my-easily-identifiable-id").closest("td").nextAll().andSelf().slice(0, 7);
6 голосов
/ 07 октября 2011

Я думаю, что более простое решение, чем опубликованные до сих пор, было бы .nextUntil():

//to get next 8 elements
var i = $('#my-easily-identifiable-id').index();
$('#my-easily-identifiable-id').closest('td').nextUntil('', ':lt(' + (i+8) + ')');

//to get self and next 3
var i = $('#my-easily-identifiable-id').index();
$('#my-easily-identifiable-id').closest('td').nextUntil('', ':lt(' + (i+3) + ')').andSelf();

Захватывает все «следующие» элементы, пока фильтр не сработает (в этом случае мы выбираем следующие 8 элементов). Проверено jsFiddle .

1 голос
/ 07 октября 2011

Я не пробовал, но, возможно, может сработать следующее (я сейчас протестирую):

$("#my-easily-identifiable-id").siblings().slice($(this).index(),($(this).index() + 8)).hide();

Протестировано и проверено с помощью JS Fiddle demo .

0 голосов
/ 07 октября 2011

Может быть, что-то вроде этого:

$("#my-easily-identifiable-id").closest("td").hide();
$("#my-easily-identifiable-id").closest("td").nextAll().hide();
...