2013-06-14 4 views
0

Я хочу написать плагин, который вызывает replaceWith, как я могу выбрать этот новый контент, чтобы я мог подключить свой плагин к новому контенту.Как получить объект jquery для замещенного элемента DOM

$.fn.spam = function() { 
    this.replaceWith('<span>spam</span>'); 
}; 

, и я хочу сделать что-то вроде

$('div').span().css('background-color', 'red'); 

replaceWith возвращения старого содержания, как я могу получить новое содержание?

+0

сохранить это в var и вернуть его? – BeNdErR

ответ

2
$.fn.spam = function() { 
    var elems = $(); 
    this.each(function() { 
     var span = $('<span />', {text: 'spam'}); 
     $(this).replaceWith(span); 
     elems.push(span.get(0)); 
    }); 
    return $(elems); 
}; 

$('div').spam().css('background-color', 'red'); 

FIDDLE

+0

Я думаю, что CSS не является частью того, что он хочет в плагине. – Broxzier

+0

@Broxzier - Ах, получилось? – adeneo

+0

Вы можете сделать это в одной строке, используя 'elems.push ($ ('', {текст: 'spam'}). ReplaceAll ($ (this)) [0]);' – jcubic

1

может быть, как это:

$.fn.span = function() { 
var theNewElt = $('<span>spam</span>'); 
this.replaceWith(theNewElt); 
return theNewElt; 
}; 


$('div').span().css('background-color', 'red'); 

испытания его на jsfiddle

0

Я нашел способ сделать это в одной строке с помощью метода replaceAll Jquery

$.fn.spam = function() { 
    return $('<span>spam</span>').replaceAll(this); 
}; 
Смежные вопросы