#jquery #html #append #string-concatenation
#jquery #HTML #добавить #строка-конкатенация
Вопрос:
(Полный код ниже)
Это
$('#' id).parent().append('<div id="pop-up">hello</div>');
работает. Но это
$('#' id).parent().append('<div id="pop-up-' id '">hello</div>');
не работает.
Тот факт, что первая версия работает, позволяет мне предположить, что проблема не в id
переменной…
Таким образом, полный код
function clickOnElement(id) {
var obj = {};
obj.clicked = String(id);
var jsonData = JSON.stringify(obj);
$.ajax({
type: 'POST',
url: '../db/RequestHandler.ashx',
data: jsonData,
contentType: 'application/json; charset-utf-8',
success: function (response) {
// Add the div for the dialog-box
$('<div>Hello</div>', {
"id": "pop-up" id
}).appendTo($('#' id).parent());
},
error: function () {
console.log("request error");
}
});
}
Комментарии:
1.
.append
ожидает элемент, а не строку. Если у вас есть строка HTML, используйте.html()
вместо2.
.append()
будет работать после загрузки DOM. родительский div загружен, но одновременно вы добавляете его к тому элементу, которого в данный момент нет в DOM. попробуйте добавить после того, как документ будет готов3. для меня отлично работает jsfiddle.net/gx6mrqr7
4. откуда берется идентификатор?
5. Я развиваюсь в ASP.NET Бритва:
$('#@r.id').click(function() { clickOnElement(@r.id); });
Ответ №1:
Используйте .appendTo()
- Методы
.append()
и.appendTo()
выполняют ту же задачу. - Основное различие заключается в синтаксисе, в частности, в размещении содержимого и цели.
- С помощью .append() выражение селектора, предшествующее методу, является контейнером, в который вставляется содержимое.
- С другой стороны, с помощью .appendTo() содержимое предшествует методу либо как выражение селектора, либо как разметка, созданная на лету, и оно вставляется в целевой контейнер.
Пример кода
$('<div>Hello</div>', {
"id": "pop-up" id
}).appendTo($('#' id).parent());
К ТВОЕМУ СВЕДЕНИЮ,
Пожалуйста, убедитесь, что элемент существует в DOM и вы добавляете его в правильном селекторе.
Надеюсь, это поможет.
Комментарии:
1. Да, вы допустили ошибку,
'
но я ее исправил.$('#' id).parent().append("<div id='pop-up" id "'>hello</div>");
Кажется, это работает. Кто-нибудь может объяснить, почему??2. Я обновил свой ответ, просто убедитесь, что вы используете
appendTo
правильный.3. нет ничего плохого в
.append()
том, что это просто конфиль кавычки.4. Спасибо за ваш ответ. Теперь он
div
добавлен правильно.id
Пока не работает только атрибут. Но, возможно, я мог бы найти обходной путь с.attr()
помощью метода jQuery.5. Хорошо, рад видеть, что это, наконец, помогает вам.
Ответ №2:
Попробуйте выполнить следующее
var parent = $('#' id).parent();
var el = $('<div>', {id: "pop-up" id,text:"hello"});
el.appendTo(parent);
правильный способ добавления текста к созданному объекту — использовать свойство text:
Комментарии:
1. Это действительно сработало. Спасибо. Есть предложения, почему?
2. из того, что я могу сказать, jquery не может добавить свойство в закрытый div
<div>Hello</div>
3. Я также заметил, что
"pop-up-" id
это не работает, но"pop-up" id
работает.4. Ну, я не полагаюсь на
-
😉
Ответ №3:
Создайте HTML с помощью jQuery (html, атрибуты), вы будете в безопасности от кавычек
$('#' id)
.parent()
.append($('<div>', {
id: "pop-up-" id ,
text: "hello"
});