Jquery добавить элемент, если нет
Я читаю книгу по jQuery, и у нее есть несколько простых задач и примеров.
Я пытаюсь добавить элемент в таблицу, но только если элемент еще не присутствует.
Таблица такова:
<table border="1" cellspacing="0">
<tr>
<td>Spaghetti</td>
<td>Karl</td>
</tr>
<tr>
<td>Pasta</td>
<td>David</td>
</tr>
</table>
Проблема в том, что нам не разрешено добавлять классы или идентификаторы.
Идея состоит в том, чтобы добавить подпись. И, конечно, если кнопка нажата 2 раза, не добавляется вторая подпись.
Я пробовал это:
if(!jQuery.contains('table','caption')) {
$('table').append('<caption>Orders</caption>');
}
И этот
if(!($("table:contains('caption')"))) {
$('table').append('<caption>Orders</caption>');
}
Но никто не работает. Я прочитал jQuery api о функциях и селекторах, я думал, что они будут работать, но они этого не делают. Что мне нужно сделать?
Ответы
Ответ 1
Вы можете сделать это без инструкции if()
, если хотите:
$('table:not(:has(caption))').prepend('<caption>Orders</caption>');
Здесь используется not-selector
(docs) и has-selector
(docs), чтобы выбрать элементы <table>
, у которых нет вложенных <caption>
.
Он также использует метод prepend()
(docs), чтобы дать более ожидаемое размещение в DOM. Это не повлияет на фактическое отображение на странице.
Ответ 2
Это должно работать
if($("table caption").length === 0) {
// append caption
}
Вызов jQuery возвращает все элементы заголовка, присутствующие внутри всех элементов таблицы. .length
возвращает количество элементов. Если это 0, добавьте подпись.