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

元素可见时不会触发“显示”事件。您必须将处理程序绑定到导致元素首先可见的事件。在这种情况下,这似乎是第一个 div 上的点击事件:

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

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

请注意,根据 HTML 4 规范,元素 ID 不应以数字开头。但是,这在 HTML 5 中没问题。

需要注意的进一步改进是,当将处理程序绑定到动态生成的元素时,最好以最近的静态父元素为目标,而不是允许在document级别处理委托;即做$("#parent").on("click", element, function() {})

最后,由于<div id="1">是静态的,你不需要委托事件处理程序,你可以直接绑定处理程序:

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