2012-01-13 25 views
0

私はHTMLページに要素を追加するjavascript関数を持っています。ユーザーがHTML内のボタンをクリックすると、関連するHTMLコンテンツがページから削除されるという機能を追加したいと思います。JavascriptからHTMLの要素を削除するには?

$("#keywords").append("<td><img src=\"images/delete.png\" class=\"delete_filter\" /> " + id + "</td>"); 

上記のコードは、HTMLに要素を追加する方法です。この場合、ユーザーが添付された画像をクリックすると、<td><img src=\"images/delete.png\" class=\"delete_filter\" /> がHTMLから削除されます。要素が動的にそれが唯一の負荷に使用可能であった要素を見ているようclick()が動作しません追加されているので

$(".delete_filter").click(
function(){ 
    ($(this).parent()).remove(); 
}); 
+0

なぜ$(this).parent() 'をかっこで囲んでいますか? '$(this).parent()。remove()'を試してください。また、「働いていない」よりも具体的になりますか?あなたは何が起こっているのですか?何も起こっていないように見える場合は、Javascriptエラーが発生していますか? –

+0

それは私のために正常に動作します。 http://jsfiddle.net/yf8jv/ – Shyju

+0

@AnthonyGristそれはそれを書く奇妙な方法であることに同意しますが、それは何の違いもありません。 – Pointy

答えて

2

を:

これは私が今、それが機能していないしているものです。

代わりにこれを試してみてください:

$("#myTable").delegate(".delete_filter", "click", function() { 
    $(this).parent().remove(); 
}) 

かのjQuery 1.7以降で

$("#myTable").on("click", ".delete_filter", function() { 
    $(this).parent().remove(); 
}) 
+1

関連する 'td'は、追加されるので、DOMの一部でもありません。 –

+0

@ rich.okelly非常に良い点 - ありがとう。 –

+0

'.on()'がうまくいきます!解決していただきありがとうございます! – amlane86

1

要素は、以下を試してみてください、あなたはあなたのイベントリスナーを設定する時点でHTMLの一部ではありません:

$('table').delegate('.delete_filter', 'click', function() { 
    $(this).parent().remove(); 
}); 
2

DOMエレメントの前にclickハンドラーを追加しているようですページに追加されました。したがって、それはその要素に束縛されていません。 onを使用してみてください代わりに

$('table').on('click', '.delete-filter', function() { 
    $(this).parent().remove(); 
}); 

on APIは、jQueryの1.7に新しいです。以前のバージョンを使用している場合は、live

$('table').delegate('.delete-filter', 'click', function() { 
    $(this).parent().remove(); 
}); 
+0

あなたの '。'$("。delete_filter ")。click(' code。 '' on '() ''をイベントの委譲を行うには、ハンドラを祖先に置いて、 '$("#keywords ")。on( 'click'、 '。delete_filter'、func ...' –

+0

1.7より前のバージョンを使用しているなら、 'live'ではなく' delegate'を使うべきです。 jQueryの以前のバージョンを使用しているユーザーは、.live()よりも.delegate()を使用する必要があります。 "[.live() ) - jQuery API](http://api.jquery.com/live/) –

+1

@amnotiam興味深いことに、それを認識していませんでした – JaredPar

0

を試してみてください。この

$(document).ready(function(){ 

    $("#keywords").append("<td><img src=\"images/delete.png\" class=\"delete_filter\" /> " + id + "</td>"); 

    $(".delete_filter").on("click", function(event) { 

    // Not sure why you had this section wrapped in a function() tag, wasn't necessary 
    $(this).parent().remove(); 

    }); 
}); 
0

はこれを試してみてくださいしてみてください:DOMに項目を追加後にイベントをバインドします。

$("#keywords").append("<td><img src=\"images/delete.png\" class=\"delete_filter\" /> " + id + "</td>"); 
$(".delete_filter").click(function() { 
    $(this).parent().remove(); 
}); 
1

試してみてください。

$('#keywords').on('click', '.delete_filter', function() { 
    $(this).parent().remove(); 

}); 

コードが実行されるとDELETE_FILTERクラスオブジェクトがまだ存在していないので、おそらくあなたのコードが動作しません。 on構文はそれを動的にバインドして動作するはずです。

関連する問題