on()上的直播活动不起作用

时间:2017-03-21 22:17:04

标签: javascript jquery javascript-events

我使用$ .getJSON添加了带有class =“divhide”的DOM元素。

现在我有很多div与class =“title”并且我添加了事件,但这不起作用:

$('.title').on("click",'div.divhide' , function () {
    var description = $(this).find('.divhide')
    description.slideToggle();
})

我还在getJSON中添加了class =“title”。

1 个答案:

答案 0 :(得分:0)

如果在添加点击处理程序后通过.title添加getJSON元素,则处理程序将不会附加到新元素。

应用处理程序时,元素必须存在。这就是我们使用委托的原因。换句话说,将处理程序附加到将始终存在的父元素,或者至少在应用处理程序代码时存在:

$('body').on("click",'div.divhide' , function () {
    var description = $(this).find('.divhide')
    description.slideToggle();
})

这是一个极端的例子(可能并不明智),因为您可能不想过滤页面上的所有点击。但是,由于正文将始终存在,它将处理每次点击并过滤以查看初始点击是否在div.divhide上。

而不是body,找到.title div的父级,这些div不会被getJSON调用修改,并且在您应用处理程序时存在。