Javascript jquery:如何将DOM元素附加到包含其他DOM元素的变量内的选择器
在将DOM元素附加到实际DOM之前,在javascript变量中存储DOM元素时,jQuery有没有办法选择变量中的元素 比如说,, 我的页面上有一个tweet列表。每次单击刷新按钮,我都会在下面的列表中添加一条新的tweet。 我添加了如下新推文: 新推特 现在,当我发布一条新tweet时,我会执行以下操作:Javascript jquery:如何将DOM元素附加到包含其他DOM元素的变量内的选择器,javascript,jquery,Javascript,Jquery,在将DOM元素附加到实际DOM之前,在javascript变量中存储DOM元素时,jQuery有没有办法选择变量中的元素 比如说,, 我的页面上有一个tweet列表。每次单击刷新按钮,我都会在下面的列表中添加一条新的tweet。 我添加了如下新推文: 新推特 现在,当我发布一条新tweet时,我会执行以下操作: $(document).on('click', '.refresh', function() { newTweet = $(<new tweet code from abo
$(document).on('click', '.refresh', function() {
newTweet = $(<new tweet code from above>);
actionsMark = $(actionsMarkup);
$(newTweet.appendTo('#tweets');
因为这会再次将标记放在所有.content div上,即使它已经存在
在将newweet变量附加到文档对象之前,是否有方法使用选择器访问该变量中的DOM节点?
我在想
$(actionsMarkup).appendTo( newTweet, '.content');
如果选择器无法做到这一点,那么还有哪些快速方法
Tweet和Tweet容器列表
-
多萝西
彩虹之上的某处
3分钟前
-
狮子
往高处走,
17分钟前
-
稻草人
还有你梦寐以求的梦想,
32分钟前
您可以使用,在添加新tweet后选择最后一个元素,如下所示:
$(document).on('click', '.refresh', function() {
newTweet = $(<new tweet code from above>);
$(newTweet).appendTo('#tweets');
var actionsMarkup =
"<div class='actions'>
<span class='favorite'>Favorite</span>
<span class='retweet'>Retweet</span>
<span class='reply'>Reply</span>
</div>";
$("#tweets .tweet").last().find(".content").append(actionsMarkup);
});
我想看看你是否可以做同样的事情,发现这个问题,但现有的答案在我的情况下是没有用的,因为我想在添加之前修改元素 您可以使用jQuery在变量中创建一个新的dom元素,并在附加它之前对它进行操作,就像它已经在dom中一样 例如:
var newTweet = $('<div></div>');
newTweet.addClass('tweet');
newTweet.append('<span class="username"></span>');
newTweet.find('span.username').html('John Doe');
$('body').append(newTweet);
var newTweet=$('');
newTweet.addClass('tweet');
newweet.append(“”);
newTweet.find('span.username').html('johndoe');
$('body').append(newTweet);
以下内容将附加到正文中:
<div class="tweet"><span class="username">John Doe</span></div>
johndoe
如果您正在构建一个具有多个选项的可重用界面元素(如对话框),那么这将非常方便。嘿,您的问题是具体的,而不是一般性的。请将您的问题编辑为更一般的问题,这更容易理解。@VeerShrivastav当您说它是特定的时,您的意思是特定于jQuery吗?我想让这成为一个一般性的问题。您认为我可以如何改进它?您在
HTML
标记中使用了太多不需要的嵌套。它可以很简单,
无需嵌套太多。这使我们难以回答这个问题。很长的问题很难回答。谢谢你的回答。那个.last
方法是一个很棒的解决方案,还有:last child
什么是真正的解决方案?
$(actionsMarkup).appendTo( newTweet, '.content');
<ul id="tweets" class="normal-tweet show-promoted-tweets">
<li class="tweet promoted-tweet" data-user-name="Dorothy">
<div class="image">
<img height="48" width="48" src="http://twitter.com/api/users/profile_image?screen_name=Dorothy" alt="" />
</div>
<div class="content">
<div class="user">
<a class="user-name" href="http://twitter.com/Dorothy" title="Dorothy">Dorothy</a>
<div class="full-name">Dorothy</div>
</div>
<div class="text">Somewhere over the rainbow</div>
<div class="time-stamp" data-time="1322631934000">3 minutes ago</div>
</div>
</li>
<li class="tweet promoted-tweet" data-user-name="lion">
<div class="image">
<img height="48" width="48" src="http://twitter.com/api/users/profile_image?screen_name=lion" alt="" />
</div>
<div class="content">
<div class="user">
<a class="user-name" href="http://twitter.com/lion" title="lion">lion</a>
<div class="full-name">Lion</div>
</div>
<div class="text">Way up high,</div>
<div class="time-stamp" data-time="1322631934000">17 minutes ago</div>
</div>
</li>
<li class="tweet normal-tweet" data-user-name="scarecrow">
<div class="image">
<img height="48" width="48" src="http://twitter.com/api/users/profile_image?screen_name=scarecrow" alt="" />
</div>
<div class="content">
<div class="user">
<a class="user-name" href="http://twitter.com/scarecrow" title="scarecrow">scarecrow</a>
<div class="full-name">Scarecrow</div>
</div>
<div class="text">And the dreams that you dreamed of,</div>
<div class="time-stamp" data-time="1322631934000">32 minutes ago</div>
</div>
</li>
</ul>
$(document).on('click', '.refresh', function() {
newTweet = $(<new tweet code from above>);
$(newTweet).appendTo('#tweets');
var actionsMarkup =
"<div class='actions'>
<span class='favorite'>Favorite</span>
<span class='retweet'>Retweet</span>
<span class='reply'>Reply</span>
</div>";
$("#tweets .tweet").last().find(".content").append(actionsMarkup);
});
$(actionsMarkup).appendTo('#tweets .tweet:last-child .content');
var newTweet = $('<div></div>');
newTweet.addClass('tweet');
newTweet.append('<span class="username"></span>');
newTweet.find('span.username').html('John Doe');
$('body').append(newTweet);
<div class="tweet"><span class="username">John Doe</span></div>