come ottenere il contenuto effettivo di un oggetto dopo essere stato ReplaceWith ( 'qualcosa') in jQuery

StackOverflow https://stackoverflow.com/questions/3573521

  •  01-10-2019
  •  | 
  •  

Domanda

Ho questo codice

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

Voglio ottenere il nuovo contenuto di 'obj' che è stato 'ReplaceWith'

ma,

ottengo il vecchio contenuto invece ...

come faccio a ottenere l'effettivo contenuto di 'obj' ???

la mia intenzione è quella di accedere al nuovo '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'
});

Voglio stampare il nome della classe del 'arco', che è 'medio'

È stato utile?

Soluzione

Il metodo aggiornato è quello corretto, ha solo bisogno di un tweak come questo:

$('.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')); 
});

È possibile provarlo qui . Il cambiamento importante è la repl.find() di guardare nel nuovo elemento al posto di quello vecchio.

Altri suggerimenti

perché vuoi farlo? si sa che cosa è stato sostituito con ....

$(document).ready(function(){
    $('.selector').click(function(){
        var obj = $(this);
        var replacement = $('<div class="size">whats up man ??!</div>');
        obj.replaceWith(replacement);
        alert(replacement.html());
    });
});
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top