Использование $ (this) после .replaceWith () - PullRequest
9 голосов
/ 09 декабря 2010

Пожалуйста, рассмотрите ниже HTML и Javascript.В этом сценарии я заменяю тег a тегом p .Я ожидаю, что функция alert () вернет содержимое тега p , но вместо этого вернет содержимое исходного тега a , которого больше не существует.

Как я могу ссылаться на новый элемент?

HTML:

<a href="">This is a link</a>

Javascript:

$(document).ready(function() {
    $("a").each(function() {
        $(this).replaceWith('<p>New Paragraph</p>');
        alert($(this).text());
    });
});

Ответы [ 3 ]

10 голосов
/ 09 декабря 2010

Вы не можете сделать это напрямую с .replaceWith(), но вы можете создать его отдельно. Попробуйте это:

$(document).ready(function() {
    $("a").each(function() {
        var p = $('<p>New Paragraph</p>');
        $(this).replaceWith(p);
        alert(p.text());
    });
});
2 голосов
/ 09 декабря 2010

Вместо этого можно использовать метод replaceAll, который возвращает новое содержимое вместо исходного:

$(document).ready(function() {
  $("a").each(function() {
    alert($('<p>New Paragraph</p>').replaceAll($(this)).text());
  });
});
0 голосов
/ 09 декабря 2010

Попробуйте это:

alert($(this).replaceWith('<p>New Paragraph</p>').text());
...