Я хочу получить длину div, упомянутую в следующих кодах:

<div id="txt">Hello <img src="..."> <b>Emoji</b> </div>

Я использую эти jquery коды (количество всех символов, включая теги img):

var mylength= $("#txt").html().length;

Изображение является смайликом, который должен быть подсчитан 2. Таким образом, вместо каждого img счет должен быть 2, а не реальная длина. Как я могу это сделать?

ПРИМЕЧАНИЕ. . Другие теги должны учитываться как есть (например, <b>A</b> равно 8). Только img теги должны учитываться 2.

Jsfiddle: https://jsfiddle.net/rpknphym/1/

2
Saeed sdns 11 Янв 2017 в 20:00

3 ответа

Лучший ответ

Попробуй это. Удалите теги img и добавьте длину тегов img в оставшуюся длину html

var copy= $("#txt").clone();
var count = $(copy).find("img").length;
$(copy).find("img").remove();
// it must be 21 = 12 (text chars) + 7 (b tag) + 2 (img tag)
console.log(copy.html().length + count * 2); // img tag counts for 2
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="txt">Hello<img src="https://cdnjs.cloudflare.com/ajax/libs/emojione/2.1.4/assets/png/1f61b.png"> <b>Emoji</b> </div>
3
Deep 11 Янв 2017 в 17:15

Сохраните HTML как переменную:

var html=$('#text').html();

Затем замените все теги изображений чем-то длиной 2 символа

html = html.replace(/<img\ssrc\="[a-zA-Z\/:\.0-9\?\&\=\-_]+">/g,'im');

Тогда вы можете найти длину этого с

var len=html.length;
var html = $('#text').html();

html = html.replace(/<img\ssrc\="[a-zA-Z\/:\.0-9\?\&\=\-_]+">/g, 'im');
var len = html.length;
$('#text').text(html);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<div id="text">
  <img src="/favicon.ico">
  <img src="http://www.google.com/favicon.ico">hello world
  <h1>big text</h1>
</div>
3
kzhao14 11 Янв 2017 в 17:16

Это составляет несколько тегов img.

var mylength = $("#txt").html().length; 
$("img","#txt").each(function() { mylength -= this.outerHTML.length - 2;});

Твоя скрипка, раздвоенная.

1
RamblinRose 11 Янв 2017 в 17:32