jQuery: элемент <IMG /> на лету - PullRequest
       38

jQuery: элемент <IMG /> на лету

0 голосов
/ 17 ноября 2009

Вот проблемная часть моего кода, запускаемая внутри .each (function () {});

$('img','<div>'+ed.selection.getContent({format: 'html'})+'</div>').each(function(){  
  $img=$('<img/>').attr('src',$(this).attr('src'));
  alert($('<p>'+$img+'</p>').html());
  if ($(this).attr('height').length>0){
    $img.attr('height',$(this).attr('height'));
  }
  if ($(this).attr('width').length>0){
    $img.attr('width',$(this).attr('width'));
  }
  alert($img.html());
});

Во-первых, я работаю с выбранным содержимым tinyMCE в формате html, что очень хорошо, так как jQuery распознает его правильно. $ img.html () возвращает пустое значение, не неопределенное, а просто пустое. Протестировано как FF 3.6, так и IE8. Может кто-нибудь объяснить, пожалуйста?

Ответы [ 4 ]

2 голосов
/ 17 ноября 2009

Функция html() возвращает только содержимое элемента. Поскольку <IMG> технически пуст, вы получите пустую строку.

Если у вас было это:

<span>The text</span>

и вы запросили $span.html(), вы получите просто The text без включенных тегов.

1 голос
/ 17 ноября 2009

Если вы заинтересованы в доступе к контенту <img>, взгляните на Вопрос № 298049

0 голосов
/ 17 ноября 2009

Элемент изображения не имеет внутреннего HTML-кода, поэтому метод не может его вернуть.

0 голосов
/ 17 ноября 2009

.html() дает вам innerHTML элемента, т.е. что внутри него. У <img> нет ничего внутри - это пустой элемент.

У вас есть правильная идея, завернув ее и взяв внутренний HTML этого.

...