2011-12-24 8 views
2

jqueryをしばらく使用していますので、この問題は非常に恥ずかしいです。私は新しい要素を作成しましたが、jqueryでそれを選択することはできません。これについて何ができますか?これは私がhtmlのiは、このjqueryで新しく作成されたオブジェクトを選択できません

$('#test').click(function(){ 
    $(this).remove(); 
}); 

を試みたが、それは動作しません

<html> 
<head> 
</head> 
<body> 
<div id="ref"></div> 
</body> 
</html> 

ある要素を作成するために

$('<div id="test">blah</div>').insertAfter('#ref'); 

を使用するJavaScriptです...私はここに助けが必要

+0

あなたのブラウザにFireBugをインストールし、コンソールタブに行き、間違っているかどうかを確認してください。ライブメソッドの場合は – MahanGM

答えて

2
$('#test').live('click', function(){ 
    $(this).remove(); 
    }); 
+0

+1! =) – gideon

+0

'.live()'は、要素が追加される前にハンドラがバインドされている場合にのみ役立ちます。この場合、彼は最初に要素を追加するので、 '.click'はうまくいくはずです。 – Interrobang

+2

"live()"は推奨されていません。代わりに "on()"を使用してください。あなたはとにかく同じIDを持つ複数の要素を作成しないでください –

4

ここにJSFiddあなたのコードが動作していることを示しています。http://jsfiddle.net/YqEMa/

javascriptをjQueryの「ドキュメント対応」ハンドラに配置していない可能性があります。このようなあなたのJavascriptをラップ:これはあなたのJavascriptが実行される前に、DOMがロードされたことを確認します

$(function() { 
    $('<div id="test">blah</div>').insertAfter('#ref'); 
    $('#test').click(function() { 
     $(this).remove(); 
    }); 
}); 

もちろん、スクリプトが<script>タグ内にあることを確認する必要があります。

2

(彼らは、ページのライフサイクルに存在したときにではなく、すべての#test要素)あなただけのあなただけクリックされるように挿入した要素をしたい場合は、あなたが新たに作成された要素にイベントをバインドすることができます。

$('<div id="test">blah</div>') 
    .click(function(){ 
     $(this).remove(); 
    }) 
    .insertAfter('#ref'); 
+0

http://api.jquery.com/on/を参照してください。参照:http://stackoverflow.com/questions/4789859/access-multiple-elements-of-same-id-in-jquery –

+1

@ MerlynMorgan-グラハム同じIDを、私はあなたが意味を考える - あなたは正しいです。新しいIDを挿入する前に、このIDを持つ前の要素を削除する限り、何も問題はありません。とにかくこの技術はおそらくあなたがIDを失う可能性があることを意味します。 – lonesomeday

関連する問題