jQuery.ajax を使用して、XML ファイルを読み取って HTML にレンダリングしています。
次のコードは、XML の各データ レコードのボタンのテーブルを生成します。
$(xml).children('run').each(function() {
var runname = $(this).children('name').text();
buttonHtml = '<tr><td class="expbutton" id="runExpButton" onmousedown="myFunc(runname)">Click me</td></tr>';
$('#Runs').append(buttonHtml);
});
ここで何を達成したいのかを理解するのは難しくありません。しかし、明らかにそれは機能しません。
私の質問は、jQuery でこれを達成するにはどうすればよいですか? .live または .on メソッドを使用すると、「runname」などのローカル変数にアクセスできません。
[編集]
jQuery.data() の使用を試みます:
$(xml).children('run').each(function() {
var runname = $(this).children('name').text();
buttonHtml = '<tr><td class="expbutton" id="runExpButton" onmousedown="myFunc(runname)">Click me</td></tr>';
$('#runExpButton').data('runname', runname);
$('#Runs').append(buttonHtml);
});
$('#runExpButton').live('click',function() {
alert($(this).data("runname"));
});
うまくいかないようですか?ボタンの 1 つだけが正しいデータ値を持っています。
すべてのボタンが同じ ID を持っているため、.data() はこれで動作しないのではないでしょうか?