#javascript #jquery #html #element
#javascript #jquery — запрос #HTML #элемент #jquery
Вопрос:
Я хочу добавить элемент H2 <h2>H2</h2>
к html, как показано ниже
<!DOCTYPE html>
<html>
<head>
<title>Page Title</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
</head>
<body>
<div id="a">
<h1>H1</h1>
<!--I want to add H2 here-->
<h3>H3</h3>
</div>
<div id="b">
</div>
</body>
</html>
Я запрашиваю div следующим образом var mydiv = $("#a")[0];
, а затем я хочу добавить <h2>H2</h2>
внутри myDiv, но после <h1>H1</h1>
ИЛИ до <h3>H3</h3>
. Я немного поиграл с after (), insertAfter(), before(), insertBefore(), но безуспешно, потому что я хочу настроить таргетинг и использовать объект ‘myDiv’, а не всю HTML-страницу.
РЕДАКТИРОВАТЬ: Некоторые вещи, которые я пробовал
Я попробовал следующее:
var myDiv = $("#a")[0]
$(myDiv).append("<h2>H2</h2>")
Это добавляет элемент в конец div
Тоже пробовал это:
$("h1").after("<h2>H2</h2>")
Это добавляет <h2>H2</h2>
после каждого <h1>H1</h1>
, что мне не нужно делать, мне нужно добавить <h2>H2</h2>
только внутри выбранного div, который в данном случае myDiv
Комментарии:
1. Всегда показывайте, что вы пробовали, но это не работает
2. Я отредактировал некоторые вещи, которые я пробовал, проблема в цели. Я хочу настроить таргетинг на выбранный div, а не на всю HTML-страницу. Это пример, на реальной html-странице у меня есть несколько H1s, и использование after добавило бы H2s после каждого H1, то же самое с before () и H3s.
Ответ №1:
Используйте jQuery#after
и jQuery#find
var myDiv = $("#a")[0];
$(myDiv).find('h1').after("<h2>H2</h2>");
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="a">
<h1>H1</h1>
<!--I want to add H2 here-->
<h3>H3</h3>
</div>
<div id="b"></div>
или
$("#a").find("h1").after("<h2>H2</h2>");
или
$("#a h1").after("<h2>H2</h2>");
Комментарии:
1. Эй, этот slector изменил ситуацию .. есть ли способ вместо использования
$('#a h1')
как-то нацелиться на h1, но использовать существующий объект, какmyDiv
у меня в примере?2. @user2052544 вам нужно использовать
find
или что-то подобное, проверьте обновленный ответ3. Понятия не имел, что мы можем соединять
after()
одноfind()
за другим… всегда учусь. Отлично, попробовал это с реальным html, который у меня есть, и сработал, как ожидалось. Спасибо!
Ответ №2:
Ваш код верен, нужно только изменить селектор, добавив h1 в селектор myDiv.
Пример:
var myDiv = $("#a h1")[0]
$(myDiv).after("<h2>H2</h2>")
Комментарии:
1. append() добавляет элемент в конец, а prepend() — в начало. Пробовал это, но это не то, что я хотел. Я принял предыдущий ответ как правильный, посмотрите, пожалуйста.
2. Извините, я прочитал ваш последний фрагмент кода и подумал, что вместо «добавить» будет указано «после». Отредактировано.