insertbefore работает, когда я просматриваю исходный код, но я не вижу новый элемент dom в браузере?

#javascript #jquery #ajax

#javascript #jquery #ajax

Вопрос:

Я вставляю html перед определенным элементом в ответ на вызов ajax.

Я не вижу недавно вставленный html на странице, но если я просматриваю исходный код, я могу его увидеть.

Я добавляю html в случае успешного выполнения вызова метода $.ajax.

 success: function(data) {
  $("#some-id").insertBefore(data);
  

}

Он также не скрыт, поэтому не уверен, что происходит?

Комментарии:

1. Неплохо было бы добавить еще немного кода…

2. является data селектором элемента, который находится на странице? Синтаксис для insertBefore() таков $("content").insertBefore("target")

Ответ №1:

(Продолжение моего комментария выше)

Скорее всего, вы хотите:

 $("#some-id").before(data);
  

или:

 $(data).insertBefore("#some-id");
  

Еще немного информации из документации:

Методы .before() и .insertBefore() выполняют ту же задачу. Основное различие заключается в синтаксисе — в частности, в размещении содержимого и целевого объекта. С помощью .before() выражение селектора, предшествующее методу, является контейнером, перед которым вставляется содержимое. С другой стороны, с помощью .insertBefore() содержимое предшествует методу либо как выражение селектора, либо как разметка, созданная на лету, и оно вставляется перед целевым контейнером.

Комментарии:

1. спасибо, я их перепутал. странно, как DOM выглядел нормально, хотя!

Ответ №2:

Если #some-id его нет в вашем DOM по умолчанию и он вставляется динамически, вам нужно будет добавить его, прежде чем вы сможете использовать insertBefore()