当前位置: 首页 > 知识库问答 >
问题:

按钮需要单击两次(Jquery)

莫繁
2023-03-14

背景:试图在一个页面站点上为移动设备构建一个全屏菜单。

问题:需要单击#handle div两次才能执行操作。我尝试过以不同的方式使用follows,但我似乎在某些方面实现错误:live/die、bind/unbind、on/off、delegate/Undelegate。

我不明白我该如何解决我的问题。很抱歉在一些Divs上出现了错误的ID名。

HTML

      <div id="overlay">
            <input type="checkbox" id="op"></input>

                <div class="overlay overlay-hugeinc">
                    <label for="op"></label>
                        <div id="nav">
                            <ul>
                                <li class="homescroll" class="overlayli">Home</li>
                                <li class="servscroll" class="overlayli">Services</li>
                                <li class="workscroll" class="overlayli">Work</li>
                                <li class="aboutscroll" class="overlayli">About</li>
                                <li class="contactscroll" class="overlayli">Contact</li>
                            </ul>
                        </div>
                </div>
      </div>

Jquery点击li时,用户将向下滚动页面,菜单将被隐藏:如果用户现在想再次打开菜单,则需要点击2次以执行操作。

<script>
     $(document).ready(function () {  
         $('li').hover(             
              function () {
                $('li', this).fadeIn();
              },
              function () {                 
                $('li', this).fadeOut();
              }
            );
        $(".aboutcroll").off().on('click', function() {

          $('html, body').animate({
                scrollTop: $("#aboutdummy").offset().top
            }, 800);                
            $("#overlay").hide();
            $("#handle").on('click'); 
        });
    });
</script>

单击#handle时,将打开覆盖全屏菜单:

<script>
    $(document).ready(function(){

        $("#handle").off().on('click', function() {
                $("#overlay").show();
        });
    });
</script>

共有1个答案

孔阎宝
2023-03-14

问题似乎出在您正在使用的代码中的#handle onClick函数上

$("#handle").off().on('click', function() {
        $("#overlay").show();
});

Here.off()在第一次单击时删除事件侦听器!尝试删除.off()

同样对于滚动,您可以使用下面的代码(也没有.off())

$("SELECTOR").click(function() {
    $('html, body').animate({
        scrollTop: $("#contact").offset().top
    }, 500);
     return false;
});

希望这对你有用!如果没有,最好是通过jsFiddle或codePen共享代码。

 类似资料:
  • 我的问题是,我的活动中的按钮需要单击两次,以使代码执行用onClick方法编写的代码。当我共享我的活动代码和布局文件代码时。请引导我解决这个问题。 活动(片段) 布局文件 而此片段正在另一个主要活动中初始化。

  • 我找到了其他相关的问题,但没有一个答案实际上解决了我的问题。这个按钮在IE上很好用,但在Chrome上不行。我尝试移除span元素,将按钮放在任何其他标记之外,但仍然触发了两次。这个temple扩展了一个'base.html'文件,代码位于'main'元素中。 HTML: jQuery:

  • 问题内容: 我有一个非常简单的表单,其中需要选择一个单选按钮以使表单有效。单选按钮由生成。 从该小提琴中可以看出,理想的行为是,当第一次单击单选按钮时,应该验证表单(是唯一的元素),但是请注意(在同一单选按钮上)按钮或任何其他)来验证表单: http://jsfiddle.net/Xsk5X/3/ 我想念什么? 问题答案: 尝试将ng-click属性添加到您的单选按钮输入中。 感谢Manny D首

  • 我需要创建一个按钮,如下所示: HTML 如何在JS文档中指定这些函数?

  • 问题内容: 我需要从HTML页面执行以下活动: 用户输入电子邮件和密码进行注册 用户单击时将表格发送到控制器 Control使用AJAX创建到RESTful Server的JSON请求,服务器进行相应的响应。 根据服务器的响应,用户应获得警报窗口,并在“提交”下方的当前页面()上显示一条消息。如果是“成功-已注册”或“失败-无法注册”。 但是,目前它的工作方式如下:1),2),3)正常工作。 用户

  • 我等待用户按下两个是或否按钮中的一个。在这些回调中,我将变量分别更新为或。 当我执行MATLAB GUI时,我必须按两次YES按钮才能使值生效。有什么提示/提示可以克服这个问题吗?