كيفية الحصول على محتوى فعلي لكائن بعد أن يتم استبداله ("شيء ما") في jQuery

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

  •  01-10-2019
  •  | 
  •  

سؤال

لدي هذا الرمز

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

أريد أن أحصل على المحتوى الجديد لـ "OBJ" الذي كان "replacewith"

لكن،

أحصل على المحتوى القديم بدلاً من ذلك ...

كيف أحصل على المحتوى الفعلي لـ "OBJ" ؟؟؟

نيتي هو الوصول إلى "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" وهو "متوسط"

هل كانت مفيدة؟

المحلول

طريقتك المحدثة هي الطريقة الصحيحة ، فقط تحتاج إلى قرص مثل هذا:

$('.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() للنظر في العنصر الجديد بدلاً من العنصر القديم.

نصائح أخرى

لماذا تريد أن تفعل ذلك؟ أنت تعرف ما استبدلته به ....

$(document).ready(function(){
    $('.selector').click(function(){
        var obj = $(this);
        var replacement = $('<div class="size">whats up man ??!</div>');
        obj.replaceWith(replacement);
        alert(replacement.html());
    });
});
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top