在元素中包装文本

时间:2011-12-26 15:29:51

标签: jquery jstree

我正在使用jsTree jquery插件,它会在树中生成链接

<a href="#" class=""><ins class="jstree-icon" style="background: url("images/icon.png") no-repeat scroll center center transparent;">&nbsp;</ins>some long text</a>

现在我想将文本包装在一个span中,因为我想使用ThreeDots jquery插件。我怎样才能以最简单的方式做到这一点? ins元素当然必须超出范围。我试图使用wrap / wrapInner jquery函数,但它总是包装我的ins元素。

当节点创建时,是否可以访问jsTree事件?哪一个?

3 个答案:

答案 0 :(得分:1)

var text = $("a").contents().filter(function() {
  return this.nodeType == 3;
});
$(text).wrap("<span />");

对jsTree一无所知,所以无法回答第二个问题。

答案 1 :(得分:1)

渲染树视图后,您可以调用以下方法,其中'test'将是您锚点的类名。

$(function() {
    $('a.test').each(function() {
        var ins = $(this).find('ins');
        var span = $('<span class="new" />');
        span.text($(this).text());
        $(this).html('');
        $(this).append(ins);
        $(this).append(span);
    });
});

在此之后,您可以使用“new”类

调用ThreeDots插件方法

答案 2 :(得分:0)

我想出了自己的答案

$('#id ul li a').each(function(){
var ins=$(this).find('ins').clone();
$(this).wrapInner('<span></span>').find('ins').remove();
$(this).find('span').before(ins);
});

但最简单的imo就是过滤器的答案。所以+1。