各セルの onclick イベントで呼び出す関数を指定できる一般的なテーブル ジェネレーターを作成しようとしています。その後、関数はページの別の場所で定義されます。
問題は、適切なタイミングで関数を評価するページを取得できないことです。クリックイベントを発生させたときではなく、DOM を構築しているときに文字列を関数に変換したいのです。たぶんこれは Javascript/JQuery では不可能ですか?
私が最初に C# でサーバー側に書いたコードの単純化されたバージョンは次のとおりです。
string functionCall = "DoSomething(4);";
TableCell detailCell = new TableCell();
detailCell.Attributes.Add("onClick", functionCall);
functionCall = "DoSomething(5);";
detailCell = new TableCell();
detailCell.Attributes.Add("onClick", functionCall);
これは、ブラウザでhtmlとしてレンダリングされたときに機能しました。次のようになりました。
function DoSomething(p)
{
alert(p);
}
<td onclick="DoSomething(4)"></td>
<td onclick="DoSomething(5)"></td>
この機能を Javascript で複製したいと考えています。
私が行った場合:
var functionCall = 'DoSomething(4);';
$('#detailCell').attr('onclick', functionCall);
何らかの理由で IE7 ではイベントが発生しませんが、Chrome では発生します。
私が行った場合:
var functionCall = 'DoSomething(4);';
$('#detailCell1').click(function () { eval(functionCall); });
functionCall = 'DoSomething(5);';
$('#detailCell2').click(function () { eval(functionCall); });
クリックイベントが追加されたときに functionCall をテキストに変更しません。代わりに、セルがクリックされたときに functionCall を評価します。これは、functionCall の値が間違っていることを意味します。
たとえば、detailCell1 をクリックしても、それが functionCall の最後の値であるため、常に DoSomething(5) を実行します。
私が行った場合:
var functionCall = 'DoSomething(4);';
$('#detailCell1').click(eval(functionCall));
クリックされたときではなく、クリックイベントを追加するとすぐに functionCall の関数が実行されます。
説明するのが難しいので、これが何らかの意味を持っていることを願っています。
基本的に私はできるようになりたいだけです
<td onclick="any javascript I feel like storing in a string"></td>
JQueryを使用。
これは可能ですか?
これは、stackoverflow に関する初めての投稿ですので、お手柔らかにお願いします...