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

第一次单击不会触发事件

柴英光
2023-03-14

我想在点击某个div(“.checker”)后触发点击输入事件。换句话说,点击'.checker'将模拟点击复选框上的点击事件,远程检查它。

我写的代码可以工作,但click只有在第二次单击后才触发,第一次单击失败时才触发。这种情况甚至不会发生在'.checker'上,也会发生在checkbox上。

下面的所有HTML都包装在jquery折叠菜单中。单击“H3”后,“.sub-tree-wrap”折叠。“e.stoppropagation”用于防止冒泡,因为冒泡会导致菜单折叠。

jquery uniform的工作原理是:单击input(checkbox)会产生气泡,并在'.control_multi'-http://uniformjs.com/中切换span和div('.checker')上的类

在jsfiddle上可以工作,但不使用jquery Unform-http://jsfidle.net/mciastek/pqp9s/3/(thx标记S)

重要的是,我只能通过Javascript/jQuery来操作HTML。

HTML

<h3><div class='checker'></div></h3>
  <div class='sub-tree-wrap'>
    <div></div>
      <div class='control_multi'>
        <div>
          <span>
            <div class='checker'>
              <span>
                <input type='checkbox'>
              </span>
            </div>
         </span>
        </div>
      </div>
    </div>
  </div>

Javascript/jQuery

   $('h3 > .checker').click(function(e){
            // prevent list collapse after click
            e.stopPropagation();
            $this = $(this);
            // if has control_open or checkbox is disabled don't run multiple checking
            var subTree = $this.parent().next();
            if( (!subTree.hasClass('has-open')) && !($this.hasClass('disabled')) ) {
                var inputCheck = $this.parent().next().find('.control_multi').find('input:checkbox')
                inputCheck.trigger('click');
            }
            // toggle class .checked after click
            $this.children('span').toggleClass('checked');
        });

共有1个答案

伍胡媚
2023-03-14

由于“.checkbox”元素,请使用触发器“focus”。

$('h3 > .checker').click(function(e){
        // prevent list collapse after click
        e.stopPropagation();
        $this = $(this);
        // if has control_open or checkbox is disabled don't run multiple checking
        var subTree = $this.parent().next();
        if( (!subTree.hasClass('has-open')) && !($this.hasClass('disabled')) ) {
            var inputCheck = subTree.find('.control_multi .checkbox')
            inputCheck.trigger('focus');
        }
        // toggle class .checked after click
        $this.children('span').toggleClass('checked');
});

查看此jsfiddle

 类似资料:
  • 问题内容: 我试图用Javascript编写视频扑克游戏,以降低其基础知识,但是我遇到了一个问题,其中jQuery click事件处理程序多次触发。 它们被附加到用于下注的按钮上,并且对于在游戏过程中第一手下注(仅触发一次)非常有效。但是在秒针下注中,每次按下一个下注或下注按钮都会触发两次点击事件(因此,每次按下正确的赌注量是两次)。总体而言,在按一次下注按钮时,触发单击事件的次数遵循此模式序列的

  • 问题内容: 似乎是一个简单的问题,但解决其他问题的方法似乎对我没有用。 试图通过单击按钮来触发AJAX请求,但似乎并未触发。 HTML示例 javascript 问题答案: 您拥有的代码在拨弄中工作得很好。初始页面加载后,按钮是否通过AJAX动态呈现? 用 代替

  • 示例代码: 我能够获得所选行的行索引,以获得精确的列数据。 上面的tr点击事件就可以了。 我现在的问题是,当单击表行内的锚链接时,如何触发此tr绑定事件? 目标:首先获得(在tr.bind click事件上处理),然后再处理锚定链接上的其余代码? 我试图在锚链接click事件中复制tr click函数,但在unitno上得到了未定义的值。查看我的代码: 测试代码:http://jsfidle.ne

  • 第一次调用时,激发一次 第二次调用时,会激发两次 等等 编辑: 下面是一个jsfiddle示例(如下所示)。 要复制,请单击按钮,然后单击,然后单击一个并重复此过程 您将注意到,第二次执行该过程时,文本会加倍

  • 本文向大家介绍解释下点击一个input输入框,依次会触发哪些事件?相关面试题,主要包含被问及解释下点击一个input输入框,依次会触发哪些事件?时的应答技巧和注意事项,需要的朋友参考一下 移入-按下-获取焦点-弹起; onmouseenter→onmousedown→onfocus→onmouseup;

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