#jquery #html
#jquery #HTML
Вопрос:
Мне нужно вставить HTML перед .content div для ссылки HTML book mark, но только если страница содержит идентификатор div для привязки, который
<div id="#bookmark"><a name="bookmark"></a></div>
Вот jQuery, который я написал, который не работает, а также не выдает никаких ошибок.
if($("#bookmark").length > 0) {
$(".content").insertBefore('<p><a href="#bookmark" class="bookmark-anchor">Jump To Section</a></p>');
}
И вот HTML
<div class="content">
<p>This is an example of content</p>
<h2>Sub Heading</h2>
<p>This is an example of content</p>
<h2>Sub Heading</h2>
<div id="#bookmark"><a name="bookmark"></a></div>
<p>This is an example of content</p>
</div>
Кроме того, не уверен, что лучше использовать .insertBefore , .prepend или любой другой метод jQuery.
Ответ №1:
insertBefore()
Метод использует вставку выбранного элемента перед другим с вашим текущим кодом, он вставит ".content"
элемент перед целью (строка HTML).
Чтобы вставить некоторый HTML-контент перед ".content"
элементом, используйте before()
метод.
$(".content").before('<p><a href="#bookmark" class="bookmark-anchor">Jump To Section</a></p>');
Если вы хотите добавить содержимое в начало элемента, используйте prepend()
метод.
$(".content").prepend('<p><a href="#bookmark" class="bookmark-anchor">Jump To Section</a></p>');
К вашему сведению: удалите #
из значения атрибута id, чтобы избежать проблем, и это необходимо только с помощью селектора идентификаторов.
Комментарии:
1. Спасибо, но это не работает. Возможно, эта часть неверна
if ($("#bookmark").length > 0) {
2. @Michelle: заменить
<div id="#bookmark">
на<div id="bookmark">
Ответ №2:
У вас есть #
идентификатор div. Идентификатор не нужен #
.Удалите это и используйте prepend
, как показано ниже.
if ($("#bookmark").length > 0) {
$(".content").prepend('<p><a href="#bookmark" class="bookmark-anchor">Jump To Section</a></p>');
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="bookmark">
<a name="bookmark"></a>
</div>
<div class='content'></div>
Ответ №3:
Вы можете использовать setInterval
по своему требованию.
let isLoad = setInterval(function () {
if ($('#bookmark').length > 0) {
$(".content").insertBefore('<p><a href="#bookmark" class="bookmark-anchor">Jump To Section</a></p>');
clearInterval(isLoad)
}
}, 500);