Javascript jquery:如何将DOM元素附加到包含其他DOM元素的变量内的选择器

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

在将DOM元素附加到实际DOM之前,在javascript变量中存储DOM元素时,jQuery有没有办法选择变量中的元素

比如说,, 我的页面上有一个tweet列表。每次单击刷新按钮,我都会在下面的列表中添加一条新的tweet。 我添加了如下新推文:

新推特 现在,当我发布一条新tweet时,我会执行以下操作:

$(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>