0

これで replaceWith を呼び出すプラグインを書きたいのですが、その新しいコンテンツを選択して、プラグインを新しいコンテンツにチェーンできるようにするにはどうすればよいですか。

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

そして、私は次のようなことをしたい

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

replaceWith古いコンテンツを返します。新しいコンテンツを取得するにはどうすればよいですか?

4

3 に答える 3

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');

フィドル

于 2013-06-14T11:42:16.103 に答える
1

多分このように:

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


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

jsfiddleでテストする

于 2013-06-14T11:44:47.877 に答える
0

replaceAlljqueryメソッドを使用して1行でこれを行う方法を見つけました

$.fn.spam = function() {
    return $('<span>spam</span>').replaceAll(this);
};
于 2013-06-14T11:45:59.803 に答える