2016-01-23 66 views
0

我想创建一个元素后面有一些文本添加到一个容器元素。jQuery连接选择器和文本

说我有:

$('<span/>').addClass('glyphicon glyphicon-folder-close') + ' ' + item.name 

,我希望这样的工作;有没有办法?

我知道我可以使用add()像这样:

$('<span/>').addClass('glyphicon glyphicon-folder-close').add(
    $('<span/>').html(' ' + item.name) 
) 

但我可以不用额外的选择?

+1

你可以,如果你使用的字符串,但是这有什么错调用jQuery的两次,以创建两个元素 – adeneo

+0

@adeneo代码开销,HTML元素开销,以及在复杂的UI中使用大量的HTML开销 – Sammaye

+0

但是,您正在**创建**元素,而不是获取它们,所以它应该无关紧要,浏览器必须创建这些元素,没有任何开销,如果你需要创建两个元素,没有快捷方式,y你必须创造两个元素。如果你真的想优化,你可以使用'createElement'来代替它,但它仍然会......等待它......创建两个元素,或者克隆第一个元素,但仍然会创建两个元素。 – adeneo

回答

1

如果你想将其追加可使用append(item.name)父做一个文本节点

var $span = $('<span/>').addClass('glyphicon glyphicon-folder-close') 
$('.someSelector') 
     .append($span) 
     .append(item.name);//will be after span 
+0

正如最后一条评论中提到的,如果您在实际的Bootstrap页面上查看,您将意识到CSS已被破坏,而且这不是我所问的做 – Sammaye

+0

好吧,你从来没有提供预期的结果...令人惊讶的26k代表 – charlietfl

1

尝试使用jQuery.parseHTML(data [, context ] [, keepScripts ])

keepScripts(默认:false)

类型:Boolean

一个Boolean指示是否包括在HTML字符串传递脚本

var nodes = $.parseHTML("<span class=glyphicon glyphicon-folder-close>span</span>" 
 
      + " text node" 
 
      , document /* [, keepScripts] default: `false` */); 
 
$("body").append(nodes)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"> 
 
</script>

+1

不... ...我们一直在那条路上......文本是在跨度 – charlietfl

+1

@charlietfl试图解释发布前的评论; '.after()'? – guest271314

+0

编辑很有趣,但如果你不能相信内容呢?似乎对我来说是一个巨大的安全漏洞 – Sammaye