0

純粋な jQuery では (まだ?)いくつかのことができないので$('el1').swap('el2')、これを変えるのに十分な創造性があるかどうか仲間のコーダーに尋ねます。

var temp = $('el1').html();
$('el1').html($('el2').html());
$('el2').html(temp);

ワンライナーに。

(私自身、 を使用する多くのアイデアを試しましたtoggle()が、常に、それを補うために html コンテンツを大幅に増やすことで終わりました。あきらめました...それでも、楽しかったです。)

4

3 に答える 3

3

スワップする jQuery が必要な場合は、次のような独自の呼び出しを作成できます。

$.fn.swap = function(el){
    var temp = this.html(), $el = el instanceof $ ? el : $(el);
    this.html($el.html());
    $el.html(temp);
    return this;
}

次に、次のように呼び出します。

$(el).swap('jQuery selector');
$(el).swap(jQueryObject); //alternative
于 2013-06-22T01:26:57.270 に答える
0

独自のスワップ機能を展開することはできませんか?

function swapHTML(el1, el2) {
  var temp = $(el1).html();
  $(el1).html($(el2).html());
  $(el2).html(temp);
}

このように、異なるパラメーターを持つワンライナーとして、これを何度でも呼び出すことができます。

swapHTML('el1', 'el2');
swapHTML('el3', 'el4');
...
于 2013-06-22T01:24:50.047 に答える
0

コードを読みやすくするために、2 つのコンテナーが jQuery オブジェクトAと で表されていると仮定しましょうB

それで :

A.wrapInner('<div class="A"/>').append(B.wrapInner('<div class="B"/>').find(".B")).find(".A").appendTo(B).contents().unwrap().end().end().end().find(".B").contents().unwrap();

...これは完全に巨大なワンライナーですが、それが求められていたものです!

デモ

さらに良いことに、これは次のように単純化されます。

A.wrapInner('<div class="A"/>').append(B.contents()).find(".A").appendTo(B).contents().unwrap();

...これはそれほど怪物ではないワンライナーです!

デモ

.html()コツは、それ以上の jQuery メソッド チェーンの機会を否定することになる、どの時点でも避けることです。

于 2013-06-22T01:56:34.230 に答える