jQuery:如何在隐藏元素上触发click事件?

时间:2018-07-17 01:55:16

标签: javascript jquery css visibility display

我想创建一个闪烁的效果。当用户单击闪烁的元素时,它将消失。但是,似乎并非每个“用户的点击”都可以触发“点击事件”。有时,当我单击闪烁的元素时,它并没有消失。我认为原因是无法单击隐藏元素。就像本文所说的CSS: Is a hidden object clickable?。那么,还有其他方法可以使闪烁的元素在用户单击该元素时立即消失吗?

var flashToggle = setInterval(function() {
  $("div").toggle();
}, 200)

$("div").on("click", function(e) {
  clearInterval(flashToggle);
  $(this).hide();
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div>Flashing element</div>

5 个答案:

答案 0 :(得分:1)

是的,隐藏/切换将通过设置css display隐藏元素。隐藏后,元素将无法获得点击。您可以尝试以下操作:

  1. 改为使用.css('visibility','hidden|visible')。建议这样做,因为它不会产生更改容器大小并引起其他元素抖动的副作用。

  2. 将闪烁的元素包装在容器元素中,而不是在容器元素上注册点击。

答案 1 :(得分:1)

将闪烁的元素放在另一个元素内,并将处理程序放在该父元素上。此外,您可以更改闪烁元素的 visibility 属性,而不是闪烁元素的display,这样它就不会在每次页面出现或消失时都改变页面的布局

const child = $('#child');
let visible = true;
var flashToggle = setInterval(function() {
  visible = !visible;
  child.css('visibility',
    visible
    ? 'visible'
    : 'hidden'
  );
}, 500)

$("#container").on("click", function(e) {
  clearInterval(flashToggle);
  $(this).hide();
})
div {
  background-color: yellow;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div id="container">
  <div id="child">Flashing element</div>
</div>

答案 2 :(得分:0)

$(this).hide(); ---> $("div").hide();

答案 3 :(得分:0)

我认为这可能是您要寻找的:$("my-element").click()

答案 4 :(得分:0)

尝试使用不透明度:0 | 1,而不是显示:无/可见性:隐藏。 关于不透明度的点击事件:0对我有用。 它对我有用。