0

jqueryに問題があります。jqueryに2つのdivがあるとしましょう。

<div id='1'>               //static div
</div>

<div id='2'>               //dynamic div
</div>

静的divは常にドキュメントに存在しますが、静的divをクリックすると動的divが切り替わります。今私が欲しいのは、次のような動的divにイベントを配置することです。

$(document).on("show", "#2", {}, function() {
 alert("div 2 present");
});

動的divがドキュメントに存在するときに何かを実行できるようにします。これどうやってするの ?

4

1 に答える 1

3

要素が表示されたときに要素によってトリガーされる「show」イベントはありません。ハンドラーをイベントに関連付ける必要があります。これにより、最初に要素が表示されます。この場合、それは最初のdivのクリックイベントのようです。

$(document).on("click", "#1", function() {
    $("#2").toggle();

    if ( $("#2").is(":visible") ) {
        alert("div 2 present");
    }
});

HTML 4仕様によれば、要素IDは数字で始めてはならないことに注意してください。ただし、HTML5では問題ありません。

document注意すべきさらなる改善点は、ハンドラーを動的に生成された要素にバインドする場合、委任をレベルで処理できるようにするよりも、最も近い静的な親要素をターゲットにする方がよいということです。すなわちします$("#parent").on("click", element, function() {})

最後に、<div id="1">は静的であるため、委任されたイベントハンドラーは必要ありません。ハンドラーを直接バインドできます。

$("#1").click(function () {
    //...
});
于 2013-03-25T18:58:35.180 に答える