javascript - 浏览器调整大小后不会触发点击事件

标签 javascript jquery html css slick.js

我目前正在使用 slick , 一个旋转木马。当浏览器的大小调整到低于某个阈值时,我将轮播设置为 unslick(这意味着它不再是轮播,并且每个轮播面板都静态地一个接一个地显示)。设置是这样的:

responsive:[{
  breakpoint: 992,
  settings: "unslick"
}]

效果很好。不过,我还有一个 .click 函数,当点击 carousel 中的元素时调用该函数。像这样的东西:

$(document).ready(function(){
  $('#linkInCarousel').click(function(){
    console.log('success');
  });
}

.click 函数在页面初始加载时起作用,但如果调整页面大小,它就不再起作用。有什么想法吗?

最佳答案

插件可能会替换 HTML,这会导致它丢失分配给那些 DOM 元素的事件处理程序。相反,尝试将事件委托(delegate)给文档,如下所示:

$(document).ready(function(){
  $(document).on('click', '#linkInCarousel', function(){
    console.log('success');
  });
};

这样做是让文档(永远不会被删除)处理事件并检查事件的实际目标是否与选择器匹配,在本例中为“#linkInCarousel”。这样,即使元素是在页面加载后添加的,处理程序也会正确触发。

一般来说,在处理元素列表时使用委托(delegate)是有益的,因此您只需添加一个事件处理程序,而不是为每个元素创建处理程序。了解更多信息 here.

关于javascript - 浏览器调整大小后不会触发点击事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32041339/

相关文章:

javascript - 我想要来自reduce()函数的每个单独的返回值而不是总数

javascript - 30 秒后隐藏消息。?

javascript - 使用每个附加 DIV 从“选择元素”中删除选项

JQuery - 使用嵌套的each() 来更新XML 字符串。原始字符串未更新

html - 调整表格单元格内的元素 <td>

javascript - 数据未填充使用 jsgrid 创建的表

javascript - JQuery .each 并使用原始 Javascript 进行迭代

javascript - 仅在滚动时播放循环的 css 动画 - 滚动停止时停止

html - 另一个 block 级元素上的 margin-top

javascript - 根据显示初始 div 的链接的数据属性在鼠标悬停时显示/隐藏 div 内容