2012-01-10 4 views
0

をボタンを削除してくださいボタンを押すと、<li>要素が削除されます。は、私はHTMLを持って手続き

削除しません。

アイデア?

+0

あなたがエラーを取得していますか? Firebugはあなたに何かを教えてくれますか? – MattW

+0

Firebugはエラーを返しません。ちょうどxxボタンは効果がありません。 – David19801

答えて

3
$(".del").click(function(e) { 

これが唯一それが走っていますときに存在.del要素に特異的に結合します。 .liveを使用します。

$(".del").live('click', function(e) { 
    $(this).parent().remove(); 
}); 

これは、追加されたタイミングに関係なく、イベントを要素にバインドします。

編集:.liveは非推奨と思われます。代わりに.onを試してみてください。

$(document).on('click', '.del', function(e) { 
    $(this).parent().remove(); 
}); 
+1

再度。 '生きている'はdepricatedです。代わりにapi.jquery.com/onを参照してください。 – Gajus

+0

実際には、jQueryの古いバージョン(1.7より前)を強制的に使用しない限り、.live();の代わりに.on()を使用したい) – danwellman

+0

Guy - 置き換えは何ですか? – David19801

2

問題の原因は、.clickを使用してハンドラをバインドするときに要素が存在しないことです。あなたは.liveを使用することができますが、要素を制御するので、より良い解決策は、動的ハンドラをアタッチすることです:

function deleteClicked(e) { 
    $(this).parent().remove(); 
} 

$(".del").click(deleteClicked); 


$("#pusher").click(function(e) { 
    var text = "test"; 
    var lix = $("<li>").addClass('uix').text(text); 
    lix.append($('<button>').addClass('del').text('xx').click(deleteClicked)); 
    lix.appendTo($("#sortable")); 
}); 
+1

「生」は無効です。代わりにhttp://api.jquery.com/onを参照してください。 – Gajus

+0

@Guy:それは私がそれを使わなかった理由です;)私は使用方法がわからない「オン」に関する誤解を与えたくありません。代わりにロケットに告げる。 – Ryan

0

jQueryを使用する必要があります。on || liveイベントバインディングは、現在および将来の現在のセレクタに一致するすべての要素のイベントハンドラをアタッチします。

のjQuery 1.7以降

$(document).on('click', '.del', function(e) { 
    $(this).parent().remove(); 
}); 

のjQuery 1.3以降

$('.del').live('click', function(e) { 
    $(this).parent().remove(); 
}); 
+0

@Rocketうん、それはちょっと変だ。 –

関連する問題