2011-12-17 5 views
0

Вот что у меня есть:Как я могу вернуть клонированный элемент из этой функции JQuery

jQuery.fn.convertInputType = function(t){ 
    var e = this; 
    e.each(function(i){ 
    var o = jQuery(this) 
    , c = o.clone(); 
    c.attr('type',t); 
    o.replaceWith(c); 
    }); 
    return e; 
} 

Я не могу понять, что вернуться обратно, чтобы сделать его цепи, как:

$('.example').convertInputType('password').css('background','blue'); 

Я думал, что смогу построить массив вроде newReturnObj[i] = o.replaceWith(c) или newReturnObj[i] = c или newReturnObj[i] = jQuery(c), но никто не работает.

+0

Btw имя метода довольно долго ... как насчет 'setType'? –

+0

setType просто беспокоит меня, что он слишком расплывчатый, а также «тип настройки» - это то же самое, что «настройка типа» означает стили шрифтов настроек. Я действительно собирался использовать его, но беспокоился об этом на массивной базе кода с ~ 150 инженерами. –

ответ

2

Здесь это работает:

$.fn.convertInputType = function (type) { 

    // we use .map() because we're replacing the set of elements 
    return this.map(function (i, elem) { 
     var clone = $(this).clone().attr('type', type);   
     $(this).replaceWith(clone);   
     return clone[0]; 
    }); 

}; 

Живая демонстрация:http://jsfiddle.net/qTqQr/1/

+0

'jQuery ('# invitations-by_email'). Find ('. Email.partial'). Css ('background', 'red'). ConvertInputType ('password'). Css ('background', 'green'). ; 'Входы никогда не становятся зелеными :( –

+0

@OscarGodson Yea, я тестирую прямо сейчас. Я выясню это. –

+0

Некоторая jQuery обманка, которая происходит в бэкэнд, я не могу дублировать ... –

Смежные вопросы