Если вы используете append() для вставки нового узла DOM, можно ли переместить контекст цепи в новый элемент?Получить элемент из последнего вызова append()
Этот пример кода иллюстрирует эту тему:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head><title></title>
<script type="text/javascript"
src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js">
</script>
<script type="text/javascript"><!--
$(function(){
$("<div></div>")
.appendTo("body")
.append("<span>Click me</span>")
.click(function(){
alert("Clicked on <" + this.tagName + ">, <SPAN> expected");
});
});
//--></script>
</head>
<body>
</body>
</html>
Этот код attachs обработчик OnClick к <div>
, но я хочу его в новом <span>
.
Edit: уточнение
Я предполагаю, что я думал о прямой функции, такие как add()
или andSelf()
, что не нарушает поток цепи столько <:-)
Edit: резюме решение
Для записей: не существует функции findAppended()
. Вот некоторые из вариантов:
Alter потока создания:
$("<span>Click me</span>")
.appendTo("body")
.wrap("<div></div>")
.click(function(){
alert("Clicked on <" + this.tagName + ">, <SPAN> expected");
});
магазин новый элемент в переменной:
var span = $("<span>Click me</span>")
.click(function(){
alert("Clicked on <" + this.tagName + ">, <SPAN> expected");
});
$("<div></div>")
.appendTo("body")
.append(span);
Начать новую субцепь:
$("<div></div>")
.appendTo("body")
.append(
$("<span>Click me</span>")
.click(function(){
alert("Clicked on <" + this.tagName + ">, <SPAN> expected");
})
);
Найти новый элемент после его создания:
$("<div></div>")
.appendTo("body")
.append("<span>Click me</span>")
.find("span:last")
.click(function(){
alert("Clicked on <" + this.tagName + ">, <SPAN> expected");
})
.end(); // Not necessary here, used to illustrate how to continue the chain
Примечания: код не тестировался.
лол, посмотрите, что вы сделали - вы выставили 5 триллионов способов сделать то же самое в JQuery, Хахаха –
@Dan Хеберден: Вы правы :) –
сделал некоторые изменения к моему ответу re: ваше уточнение –