javascript – 单选按钮上的Bootstrap-3流星事件

前端之家收集整理的这篇文章主要介绍了javascript – 单选按钮上的Bootstrap-3流星事件前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
所以我试图让事件点击单选按钮(流星).

我在模板事件(客户端js文件)中做:

Template.Questions.events({
 'click #public_btn' : function (){
  console.log('1');
  // something
 },'click #private_btn' : function (){
  console.log('2');
  // something
 }

在html客户端文件中我有单选按钮:

<div class="btn-group" data-toggle="buttons">
    <label class="btn btn-primary active">
      <input type="radio" name="privacy_options" value="public" id="public_btn"> Public
    </label>
    <label class="btn btn-primary">
      <input type="radio" name="privacy_options" value="private" id="private_btn"> Private
    </label>
  </div>

事情是点击事件不会触发,因为div得到了data-toggle =“buttons”

狐狸有这种方法吗?

解决方法

请注意,从Meteor 0.8开始,模板事件将与jQuery触发的事件一起正常工作.

所以正确的解决方案只是绑定到change事件:

Template.Questions.events({
  'change #public_btn' : function (){
   console.log('1');
  // something
 },'change #private_btn' : function (){
   console.log('2');
   // something
}

首先,事件实际上将是输入上的更改事件:无线电(在撰写本文时不点击)

其次,Meteor(0.7.0)使用它自己的事件引擎,它不会捕获jQuery触发的事件,例如. $(元素).trigger( ‘变化’)

如果您看一下bootstrap source,它会显示切换按钮会触发jQuery / synthetic事件.

所以你需要绑定jQuery事件处理程序,我发现的最有效的方法是在模板创建时执行它 – 但是基于document.body而不是实际的元素 – 因为它将在每个渲染上被替换.

Template.Questions.created = function(){
  // must bind to `document.body` as element will be replaced during re-renders
  // add the namespace `.tplquestions` so all event handlers can be removed easily
  $(document.body).on('change.tplquestions','#public_btn',function(e){
     // handler
  });
  // add the namespace `.tplquestions` so all event handlers can be removed easily
  $(document.body).on('change.tplquestions','#private_btn',function(e){
     // handler
  });
 };
 Template.Questions.destroyed = function(){
   // remove all event handlers in the namespace `.tplquestions`
   $(document.body).off('.tplquestions');
 }

猜你在找的JavaScript相关文章