Как получить фактическое содержимое объекта после того, как replaceWith («что-то») в JQuery - PullRequest
11 голосов
/ 26 августа 2010

У меня есть этот код

$(document).ready(function(){
    $('.selector').click(function(){
        obj = $(this);
        obj.replaceWith('<div class="size">whats up man ??!</div>');
        alert(obj.html());
    });
});

Я хочу получить новый контент 'obj', который был 'replaceWith'

но

Вместо этого я получаю старый контент ...

как мне получить фактическое содержание 'obj' ???

Я хочу получить доступ к новому объекту

$('.selector').click(function(){
            var obj = $(this),
            repl = $('<div class="size">whats up man ??! <span class="medium"></span></div>');
            obj.replaceWith(repl);
            alert(obj.find('span').attr('class')); //this will print 'undefined'
});

Я хочу напечатать имя класса 'span', которое является 'medium'

Ответы [ 2 ]

10 голосов
/ 26 августа 2010

Ваш обновленный метод правильный, просто нужно настроить его так:

$('.selector').click(function(){
  var obj = $(this),
      repl = $('<div class="size">whats up man ??! <span class="medium"></span></div>');
  obj.replaceWith(repl);
  alert(repl.find('span').attr('class')); 
});

Вы можете проверить это здесь . Важным изменением является repl.find() для поиска нового элемента вместо старого.

3 голосов
/ 26 августа 2010

почему ты хочешь это сделать?Вы знаете, что вы заменили его на ....

$(document).ready(function(){
    $('.selector').click(function(){
        var obj = $(this);
        var replacement = $('<div class="size">whats up man ??!</div>');
        obj.replaceWith(replacement);
        alert(replacement.html());
    });
});
...