0

以下はhtmlの部分です

<li class="main_menu catagory_li" id="cat4">
    <p class="ahead"><span class="heading">Item 4</span>
    <span class="fright remove">close</span></p>
</li>

クリックすると、以下のコードを使用してcloseコピーします。LI

$('.remove').live('click',function(){
    var closed_elem_id = $(this).parent().parent().attr('id');

        s = $(this).parent().parent().clone().wrap('<div>').parent().html();
        $('li#'+closed_elem_id).remove();
        console.log(s);

});

これは特定の場所を削除しLI、コピーを取得してに保存しvariable sます。

私の要件は、のような複製コピーにno-displayというクラスを追加することです<span class="fright remove no-display">close</span>。私はこれを多くの方法で試しましたが、失敗します。

これについての親切なアドバイス

注:私の質問を更新しました

4

5 に答える 5

1

少し最適化:http://jsfiddle.net/hKUd6/

于 2012-04-19T05:48:45.297 に答える
0

このようなもの:

$('.remove').live('click',function(){
    var pLi = $(this).closest('li');
    s = $('<div>').append(pLi.clone().addClass('no-display')).html();
    pLi.remove();
    console.log(s);
});
于 2012-04-19T05:46:41.017 に答える
0

この全体は非常にずさんです。試行している単純なタスクを実行するために必要なほど多くのコードを使用する必要はありません。

次のようなものを試してください。

$("li").on("click", ".remove", function(){
    var $this = $(this),
        liCont = $this.closest("p"),
        parentLi = $this.closest("li");
    liCont
        .clone()
        .wrap(
            $("<div>").addClass("no-display")
        )
        .appendTo("body");
    parentLi.remove();
});

ここで行うことは、任意の.remove要素のクリックイベントをキャプチャすることです。p親(後で複製してでラップするdiv)と親を選択しますli。要素(その内容を含む)のクローンを作成し、要素(DOMスクリプトを使用して作成してクラスを追加p)でラップし、完成した製品を本文に追加します(必要に応じて変更できます)。div次に、元のを削除しliます。

于 2012-04-19T05:46:56.743 に答える
0

このコードで試してみてください、それはうまくいくはずです:

$('.remove').live('click',function(){
    var closed_elem = $(this).closest("li"); //get the li to be closed/removed
    var clonedElem = closed_elem.clone().find("span.remove").addClass("no-display"); //clone the original li and add the no-display class to the span having remove class
    closed_elem.remove(); //remove the original li
    console.log(clonedElem);
});
于 2012-04-19T05:47:17.740 に答える
0

以下のコード行を確認してください。

まず、jqueryを使用して現在のクラス名を取得する必要があります。

$('li #cat4').find('span').each(function(){
  var classname = $(this).attr('class');
  $(this).addClass(classname+' no-display');
});

これはタスクの完全なコードではありませんが、現在のクラスを取得し、それに必要な文字列を追加して新しいクラスを設定するためのコードにすぎません。

ありがとう。

于 2012-04-19T05:56:46.090 に答える