JQuery удаляет все вхождения определенного тега - PullRequest
0 голосов
/ 21 февраля 2012

Из-за сложных вычислений у меня получился контент, подобный этому.

<table>
    <tr>
       <div><td>Blah</td><td>Blah</td><td>Blah</td><td>Blah</td></div>
    </tr>
    <tr>
       <div><td>Blah</td><td>Blah</td><td>Blah</td><td>Blah</td></div>
    </tr>
    <tr>
       <div><td>Blah</td><td>Blah</td><td>Blah</td><td>Blah</td></div>
    </tr>
</table>

Как убрать все теги <div> и </div>, поскольку они влияют на структуру таблицы?

Ответы [ 4 ]

4 голосов
/ 21 февраля 2012

Как уже упоминалось в комментариях, вы не можете использовать jQuery / JavaScript для надежного решения этой проблемы. Причина в том, что это недействительный HTML и конечный результат полностью зависит от методов восстановления браузера.

Например, ваша разметка будет проанализирована с WebKit (протестировано в последней версии Chrome) следующим образом:

<div></div><div></div><div></div>
<table>
  <tbody>
    <tr>
       <td>Blah</td><td>Blah</td><td>Blah</td><td>Blah</td>
    </tr>
    <tr>
       <td>Blah</td><td>Blah</td><td>Blah</td><td>Blah</td>
    </tr>
    <tr>
       <td>Blah</td><td>Blah</td><td>Blah</td><td>Blah</td>
    </tr>
  </tbody>
</table>

Может случиться так, что не все браузеры будут демонстрировать это поведение, некоторые могут анализировать его по-разному, потому что нет правильного способа анализа неправильной разметки. Исправьте эту проблему в источнике (где генерируется контент).

2 голосов
/ 21 февраля 2012

попробуйте это?Я полагаю, вы пытаетесь удалить div?

$('td').parents('div').remove();

или используете jquery unwrap

http://api.jquery.com/unwrap/

- ОБНОВЛЕНИЕ - не думайте, что удалениеили развертка сработала для меня, в этом случае браузер определенно выбивает div из таблицы и добавляет в конец дерева документа.Попытайтесь исправить логику генерации HTML, чтобы удалить div, если нет, попробуйте добавить класс в div, а затем добавьте фрагмент jquery, чтобы скрыть или удалить div с этим конкретным классом

0 голосов
/ 21 февраля 2012

Это может сработать: назначить идентификатор таблице

var content=$("#table_id").html();
content=content.replace('<div>','');
content=content.replace('</div>','');
$("#table_id").html(content);
0 голосов
/ 21 февраля 2012

Попробуйте:

$('div').remove();

Содержимое остается ...

http://jsfiddle.net/FPysK/

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