尝试使用jquery查找div中的文本长度

时间:2014-04-16 02:24:49

标签: javascript jquery

我需要找到指定div中文本的长度(即字符数)(#post_div)排除HTML格式和非特定跨度的内容。因此,任何非#span1#span2的嵌入式跨度都需要从计数中排除。

到目前为止,我有以下解决方案可行,但它添加/删除了我不想做的DOM。

 var post = $("#post_div");
 var post2 = post.html(); //duplicating for later
 post.find("span:not(#span1):not(#span2)").remove(); //removing unwanted (only for character count) spans from DOM - YUCK!
 post = $.trim(post.text());
 console.log(post.length);  // The correct length is here.
 $("#post_div").html(post2); //replacing butchered DIV with original duplicate in DOM - YUCK!

我更希望获得相同的结果,但是不需要对DOM进行屠宰/添加/替换它以获得简单的字符数。

希望有意义

2 个答案:

答案 0 :(得分:1)

不是复制HTML然后处理原始节点,而是复制节点并在主DOM树之外处理它。

var post = $("#post_div").clone();
post.find("span:not(.post_tag):not(.post_mentioned)").remove();
post = $.trim(post.text());
console.log(post.length); // The correct length is here.

答案 1 :(得分:0)

实际上,简单

var t = $.trim($("#post_div span.post_tag, #post_div span.post_mentioned").text());
console.log(t.length);

应该是足够的。

但是,如果您在span元素之外有文本内容,则必须使用

var t       = $.trim($("#post_div").text());
var t_inner = $("#post_div span:not(.post_tag):not(.post_mentioned)").text());
console.log(t.length - t_inner.length);