0

現在、document.ready ブロックに次のものがあります。

        $("[id^=summaryDetailLink_]").each(function(index) {
        var splitID = this.id.split("_");
        this.click(alert('clicked: '+splitID[1])); //toggleDetail(splitID[1])
    });

最終的には、「summaryDetail_」という ID を持つ TD がクリックされたことを検出し、TD.ID 属性から取得した ID で toggleDetail 関数を起動したいと考えています。

上記は正しい ID (アラート popsup) を生成しているように見えますが、要素をクリックしたときではなく、ページが読み込まれたときに起動します。

問題番号 1 - 各要素のクリックのハンドラーを作成してそのクリックを待機するのではなく、ページの読み込み時に起動するのはなぜですか?

問題番号 2、この問題を読んでみると、TD ではなく、テーブルに単一のイベント ハンドラーを作成してから、どの TD 要素がクリックされたかを判断する方が賢明であると思われます。それを行うためにコードをどのように変換しますか?

4

2 に答える 2

1

最初の質問への回答:

$(function() {
    $("[id^=summaryDetailLink_]").click(function() {
        var splitID = $(this).id.split("_");
        alert('clicked: '+splitID[1])
    });
}

2番目の質問に答えてください。これを行うことができます:

$('table#yourtable').on('click', '[id^=summaryDetailLink_]', function(e) {
    var splitID = $(this).id.split("_");
    alert('clicked: '+splitID[1])
});
于 2012-09-11T11:59:28.600 に答える
1

クリック ハンドラーのしくみを誤解していると思います。

$(function() {
    $("[id^=summaryDetailLink_]").click(function() {
        var splitID = $(this).id.split("_");
        alert('clicked: '+splitID[1])
    });
}
于 2012-09-11T11:55:01.067 に答える