Javascript JQuery延迟了一个事件,以便使用“click”事件处理程序检索DOM对象

Javascript JQuery延迟了一个事件,以便使用“click”事件处理程序检索DOM对象,javascript,jquery,twitter-bootstrap,Javascript,Jquery,Twitter Bootstrap,我的webapp上有两个问题,它们都是单选输入类型,但外观和某些属性与引导按钮相同。 每次单击时,我都要检查页面上选择的两个按钮。 当我点击标签时,标签label接收类.active(我猜是从引导框架中)。我想用它来过滤用户每次点击时选择的两个按钮 问题是,如果我单击选项1,在第一次单击时,按钮会被激活,但jQuery无法检索元素 然后,如果我重新单击选项1或选项2,它将正确地找到元素选项1(即使我单击了2) 在我单击的选项和jQuery找到的内容之间有一个一步的延迟 这是JS 注意:我还尝

我的webapp上有两个问题,它们都是单选输入类型,但外观和某些属性与引导按钮相同。
每次单击时,我都要检查页面上选择的两个按钮。
当我点击标签时,标签
label
接收类
.active
(我猜是从引导框架中)。我想用它来过滤用户每次点击时选择的两个按钮

  • 问题是,如果我单击选项1,在第一次单击时,按钮会被激活,但jQuery无法检索元素
  • 然后,如果我重新单击选项1或选项2,它将正确地找到元素选项1(即使我单击了2)
在我单击的选项和jQuery找到的内容之间有一个一步的延迟

这是JS

注意:我还尝试对
input
标记的类
checked
进行过滤,并观察到完全相同的行为

$(function() {
  $("label.btn").click(function() {
    console.log($("label.active").children()[0].id);
  });
})
下面是生成HTML的哈巴狗

.btn-group(data-toggle='buttons')
  label.btn.btn-primary
    input#option1(type='radio', name='lorem')
    |Option 1
   label.btn.btn-primary
   ...
注:

正在等待编辑答案。。。解决方案是将
单击
替换为
更改

可能与添加事件侦听器的顺序有关。它们将按照添加到元素的顺序执行

尝试添加小延迟

范例

$(“按钮”)。单击(函数(){
变量$btn=$(此)
log('单击时有类=',$btn.hasClass('active');
setTimeout(函数(){
log('Has class after small delay=',$btn.hasClass('active');
},20);
})。单击(函数(){
//将在触发第一个单击处理程序后添加类
$(this.addClass('active'))
})


单击我
非常感谢。我可以用它。但我期待着一个不涉及这种把戏的替代方案:)。今晚将验证您的答案。如果没有更多信息,我怀疑您会得到更多elseLet的说法,我想使用输入/无线电标准背后已经实现的功能(比如只有一个可能的选项)但我认为我做得不对,只要每个问题选择了一个选项,我就要做ajax请求,只要有一个选项被更改,我就要刷新它。由于单选按钮看起来不好,我决定使用bootstrap的单选按钮