Я удивлен, что никто не упомянул filter метод ... Из документов:
фильтр (выражение)
Удаляет все элементы из набора подобранных элементов, которые не соответствуют указанное выражение (и). Этот метод используется, чтобы сузить результаты поиска ...
Так что, возможно, что-то вроде этого?
$("table#traffic tr")
.filter(':has(td:contains('" + selected_text + "'))')
.remove();
Конечно, можно по-прежнему использовать комбинацию not
для достижения того же выбора (есть много других способов кожи этого кота). Я просто подумал, что буду упомянуть функцию filter
, так как это то, для чего она есть.
Наконец, я также хочу отметить, что ни один из подходов, на которые вы ответили до сих пор, не описывает очень вероятную ситуацию, когда вы закончите удаление строк, которые вы не хотите! Например, если строка содержит несколько ячеек, вы не хотите, чтобы только один из этих ячеек в строке, не содержащей ваш текст, чтобы удалить всю строку! Обратите внимание, что в моем решении выше фильтрация выполняется на уровне строки, а не на уровне ячеек. (Я не проверял это, поэтому, пожалуйста, не прыгайте на меня, если это не работает точно так же, как есть!)
Удачи!
-Mike
Вы правы, функция 'each', показанная в исходном сообщении, не помогает здесь. Вместо этого он может быть объединен в один селектор (но это все еще не затрагивает проблему «соседей», которые не содержат выделенный текст, вызывающий удаление строки, независимо от того, как я заметил в другом месте). – Funka