2016-08-14 2 views
1

Вот jsFiddle с соответствующей таблицей HTML.Использование prevAll для выбора всех разделов таблицы, содержащей ключевое слово

Я хочу использовать jQuery для выделения или удаления разделов таблицы, если они содержат определенные ключевые слова.

<table> 
    <tr class="mark"></tr> 
    <tr><td>apple</td></tr> 
    <tr><td>1</td></tr> 
    <tr><td>2</td></tr> 
    <tr><td>3</td></tr> 
    <tr><td>4</td></tr> 
    <tr><td>5</td></tr> 

    <tr class="mark"></tr> 
    <tr><td>pear</td></tr> 
    <tr><td>1</td></tr> 
    <tr><td>2</td></tr> 
    <tr><td>3</td></tr> 
    <tr><td>4</td></tr> 
    <tr><td>5</td></tr> 

    <tr class="mark"></tr> 
    <tr><td>apple</td></tr> 
    <tr><td>1</td></tr> 
    <tr><td>2</td></tr> 
    <tr><td>3</td></tr> 
    <tr><td>4</td></tr> 
    <tr><td>5</td></tr> 

    <tr class="mark"></tr> 
    <tr><td>pear</td></tr> 
    <tr><td>1</td></tr> 
    <tr><td>2</td></tr> 
    <tr><td>3</td></tr> 
    <tr><td>4</td></tr> 
    <tr><td>5</td></tr> 

    <tr class="mark"></tr> 
    <tr><td>apple</td></tr> 
    <tr><td>1</td></tr> 
    <tr><td>2</td></tr> 
    <tr><td>3</td></tr> 
    <tr><td>4</td></tr> 
    <tr><td>5</td></tr> 

    <tr class="mark"></tr> 
    <tr><td>pear</td></tr> 
    <tr><td>1</td></tr> 
    <tr><td>2</td></tr> 
    <tr><td>3</td></tr> 
    <tr><td>4</td></tr> 
    <tr><td>5</td></tr> 

    <tr class="mark"></tr> 
    <tr><td>apple</td></tr> 
    <tr><td>1</td></tr> 
    <tr><td>2</td></tr> 
    <tr><td>3</td></tr> 
    <tr><td>4</td></tr> 
    <tr><td>5</td></tr> 
</table> 

Прямо сейчас, я могу использовать

$("td:contains('pear')").parent().prev().nextUntil(".mark").css("background-color", "red"); 

сделать то, что я хочу сделать (выделить все секции, разделенные ===, которые содержат "грушу"). Но как я могу это сделать с помощью prevAll для случаев, когда строка разделителя не находится непосредственно перед текстом, который я ищу? Я пробовал $("td:contains('pear')").parent().prevAll(".mark:first").nextUntil(".mark").css("background-color", "red");, который, я думаю, должен работать, но выделяется только один раздел. Я думаю, что у меня отсутствует ключевая часть понимания того, как jQuery имеет дело с ситуациями, когда я хочу сопоставить действия, такие как prevAll(), со списком элементов.

Просьба проигнорировать расположение плохих таблиц; это просто то, что я должен работать с T_T

+0

Может быть, посмотреть на [mark.js] (https://markjs.io/) – dude

ответ

1

Это должно работать:

$("td:contains('pear')").parent().each(function() { 
    $(this).prevAll(".mark:first").nextUntil(".mark").css("background-color", "red"); 
}); 

См: https://jsfiddle.net/aszepeshazi/9czm7g3y/2/

+0

А, это именно то, что я хотел. Я очень новичок в jQuery и понятия не имел, что «каждый()» существует. Спасибо! –

+0

Рад, что это сработало для вас! Приветствия. –

Смежные вопросы