2010-08-26 8 views
11

Ich habe diesen Codewie tatsächlichen Inhalt eines Objekt zu erhalten, nachdem replaceWith zu sein (‚etwas‘) in jquery

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

Ich mag den neuen Inhalt von ‚obj‘ erhalten, die ‚replaceWith‘ hat

aber

ich den alten Inhalt bekommen statt ...

wie bekomme ich den eigentlichen Inhalt von ‚obj‘ ???

meine Absicht ist es, den neu ‚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' 
}); 

ich die Klasse drucken Namen der ‚Spanne‘, die ‚mittel‘

Antwort

10

Ihre aktualisierte Methode die richtige ist, muss nur ein zwicken wie folgt aus:

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

You can test it out here. Die wichtige Änderung ist die repl.find(), um in das neue Element anstelle des alten zu suchen.

+1

thx nick, du hast es genagelt. – mdennisa

3

warum wollen Sie das tun will, ist zugreifen? Sie wissen, was Sie ersetzt es mit ....

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

thx andrew, meine Absicht, den Zugang zu haben, ist alles, was im Innern der eigentlichen 'obj', $ zu manipulieren (". Größe). Klicken (function() { \t var obj = $ (this), \t repl = $ (‘

whats up man ??!
'); obj.replaceWith (ers); \t alert (obj.find (' Spanne ') attr (' Klasse).); // dies wird 'undefined' print // Ich möchte den Klassennamen aus dem tatsächlichen 'obj' }); – mdennisa

+0

aber Sie wissen, dass Sie nur "Größe" zugewiesen haben, warum also nicht nur "Größe" alarmieren? tun Sie einfach: 'replacement.find ('span'). attr ('class')' Wenn Sie wirklich müssen –

+0

ja andrew, hat Ihr Code meine Frage an erster Stelle gelöst. aber ich glaube, ich habe es nicht verstanden. hier ist das Endergebnis http://jsfiddle.net/HCXaK/1/ – mdennisa