リンクをクリックすると、以下のスクリプトは配列に項目を追加し、項目のリストをhtml出力として生成します。ここに例があります:http://jsfiddle.net/dqFpr/JavaScriptがonclickで生成されたHTMLは関数をトリガーしません
リストから項目を削除する関数を作成しようとしています。 splice()では難しい作業ではありませんが、削除リンクをクリックしてもtest_function()関数は起動しません。
私が間違っていることを誰かに教えてもらえますか、それとも機能をトリガーする別の方法を教えてもらえますか?あなたの助けを本当に;-)
<script language="javascript">
$(document).ready(function(){
function test_function(number) { /* This function is not triggered, nothing works inside here!! */ }
var lines = [];
function update_list(lines)
{
var thecode = '';
for(var i=0; i<lines.length; i++)
{
thecode = thecode + lines[i] +' <a onclick="javascript:test_function('+i+')" href="#">(delete)</a><br />';
}
$('div#display').html(thecode);
}
$('a#new').click(function() { lines.push('another line'); update_list(lines); });
});
</script>
<div id="display"></div>
<a href="#" id="new">Add a new line</a>
この記事を参照してください: http://stackoverflow.com/questions/203198/jquery-event-binding-on-dynamically-created-elements –
@Satjinderシンバス - これは、関数スコープの問題ではなく、リスナーバインディングの問題。 – RobG