Метод jQuery после () не работает с идентификационным атрибутом?
-
28-09-2019 - |
Вопрос
Ниже приведен код работает нормально. Но если я изменю HTML-строку в NewPara (), чтобы <textarea></textarea><button id="someId">Save</button>
или <textarea></textarea><input type="button" value="Save"/>
это не работает. В чем проблема в этом?
Мне нужен этот атрибут ID для удаления вновь прикрепленного HTML.
Какие-либо предложения!
Спасибо!
<html>
<head>
<style>
p { background:yellow; font-weight:bold; cursor:pointer; padding:5px; }
p.over { background: #ccc; }
span { color:red; }
</style>
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
</head>
<body>
<div id="aDiv">
<p>Click me!</p>
</div>
<span></span>
<script>
$("body").delegate("p", "click", newPara);
$("body").undelegate("button", "click", newPara).find("#adiv").html("<p>Click me!</p>");
function newPara() {
var html = "<textarea></textarea><button>Save</button>";
$(this).after(html);
}
</script>
</body>
</html>
Решение
Моя единственная предположение, что вы используете двойные кавычки для создания строкового литерала, но и используя их внутри строки, поэтому рано заканчивая его.
Если это так, это:
"<textarea></textarea><button id="someId">Save</button>"
должно быть:
'<textarea></textarea><button id="someId">Save</button>'
Обратите внимание, что я использовал отдельные цитаты снаружи, так что внутренние не закрывают строку.
Попробуйте: http://jsfiddle.net/qqrhr/
Пример использует ваш точный код. Единственное изменение, которое я сделал, должен был использовать синглые цитаты вокруг строки.
Вы также можете избежать внутренних цитат, если вы хотите:
"<textarea></textarea><button id=\"someId\">Save</button>"
Другие советы
Вы ищете присоединиться вместо после этого? Или даже http://api.jquery.com/insertafter/ ?