javascript - 为什么我必须在 <a> 上单击两次才能让 jQuery 更改它的 CSS?

标签 javascript jquery html css onclick

我目前有这个 jQuery 代码:

$('.chooser .options > li').on('click', function (e) {
    alert(e.target.innerHTML)
});

$('.chooser .toggle').on('click', function (e) {

    e.target.nextElementSibling.style.visibility = (e.target.nextElementSibling.style.visibility == "hidden") ? "visible" : "hidden";

    e.target.nextElementSibling.style.opacity = (e.target.nextElementSibling.style.opacity == "0") ? "1" : "0";

});

这是由 <a> 触发的元素。但是,如果您在 anchor 上单击一次,它不会执行任何操作。单击两次,CSS 已更改。为什么会这样,我该如何解决?我认为这与更改样式表有关。

http://jsfiddle.net/Godisgood/03vc88r7/2/

$('.chooser .options > li').on('click', function(e) {
  alert(e.target.innerHTML)
});

$('.chooser .toggle').on('click', function(e) {

  e.target.nextElementSibling.style.visibility = (e.target.nextElementSibling.style.visibility == "hidden") ? "visible" : "hidden";

  e.target.nextElementSibling.style.opacity = (e.target.nextElementSibling.style.opacity == "0") ? "1" : "0";

});
.chooser {
  display: inline-block;
  list-style: none;
  position: relative;
}
.container {} .options {
  position: absolute;
  opacity: 0;
  visibility: hidden;
  transition: all 2s;
}
a {
  cursor: pointer;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<div class="chooser container"><a class="chooser toggle">__</a>

    <ul class="chooser options">
      <li>christian</li>
      <li>homeschooler</li>
      <li>family</li>
    </ul>
  </div>

最佳答案

嗯..不太确定,但我建议这样做

http://jsfiddle.net/03vc88r7/5/

CSS

.chooser {
    display: inline-block;
    list-style: none;
    position: relative;
}
.container {
}
.options {
    position: absolute;
    opacity: 0;
    visibility: hidden;
    transition: all 2s;
}
.visible {
    opacity:1;
    visibility: visible;
}
a {
    cursor: pointer;
}

JS

$('.chooser .options > li').on('click', function (e) {
    alert(e.target.innerHTML)
});

$('.chooser .toggle').on('click', function (e) {

    if($('.options').hasClass('visible')){
        $('.options').removeClass('visible');
    }else{
         $('.options').addClass('visible');   
    }
});

关于javascript - 为什么我必须在 <a> 上单击两次才能让 jQuery 更改它的 CSS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27351876/

相关文章:

html - 如何创建对话泡泡?

javascript - 如何为 Bootstrap 4 卡片一张一张制作动画?

javascript - jquery ajax 成功 php while

javascript - 模态框不会显示

jquery - 我创建了带有 translateX 效果的菜单栏。由于填充,我无法选择该菜单栏后面的元素

jquery - Bootstrap 3 Accordion 的奇怪行为

php - 在 Codeigniter 中加载 javascript

javascript - webpack import 返回 undefined,取决于导入的顺序

javascript - 关于 Angular 中构造函数和 ngOnInit() 之间逻辑的混淆

javascript - 单击两次 Ajax 填充下拉菜单