jquery事件在meteor js把手内部不起作用

时间:2016-08-03 13:04:16

标签: jquery meteor

我必须根据用户配置文件显示div,两个div都按预期显示但是jquery事件(在单独的文件中)不起作用,但是如果我删除“if else条件”,则jquery事件正常工作,谢谢。

我试图将div放在新模板中但它也不起作用。

<!-- home profile template -->
{{# if bandprofile  currentUser.profile.type }}
      <div id="bandnamediv" class="userinforow">
        <span>Band name:</span>
        <input type="text" id="bandnameinput" class="oldinfo bld " value="   {{currentUser.profile.bandName}}"/>
       <span class="savebandname">save</span>
    </div>
{{/if}}
{{# if userprofile currentUser.profile.type }}
       <div id="firstnamediv" class="userinforow">
          <span class="oldinfo bld">First name: </span>
          <input type="text" id="firstnameinput" class="oldinfo" value="{{currentUser.profile.firstname}}"/>
         <span class="savefirstname bld oldinfo">save</span>
       </div>
 {{/if}}
 <!--end home profile template--> 

模板助手

Template.homeprofile.helpers({ 
    bandprofile: function(usertype){ 
      if(usertype === "band") { return true; }
      else {return false;} 
  },
  userprofile: function(usertype){
   if(usertype === "costumer"){ return true; }
   else  {return false;}
 }
 });

外部jquery文件:

$('.savefirstname').click(function(){
    alert('save first name');
    /*other things*/
 });
 $('.savebandname').click(function(){
    alert('save band name');
    /*other things*/
 });

1 个答案:

答案 0 :(得分:1)

我建议你改用events。根据流星命名约定,它可能更容易阅读。

Template.homeprofile.events({
  'click .savefirstname': function(e, template){
        alert('save first name');
        /*other things*/
  }
  'click .savebandname': function(e, template){
      alert('save band name');
      /*other things*/
  }
});

来自docs

  

事件映射是一个对象,其中属性指定一组事件   处理,值是这些事件的处理程序。

...

  

活动类型及其用途包括:点击更改关注模糊 ...

所以,是的,我会说事件应该包含在Template.homeprofile.events中,基于您在问题中定义的前提,您尝试绑定事件(click)。

否则,如果您真的想在事件中使用jQuery,则可以使用on代替click。 Meteor动态呈现内容,这可能就是你的事件监听者没有捡起它的原因。

$('body').on('click', '.savefirstname', function(){
    alert('save first name');
    /*other things*/
 });

$('body').on('click', '.savebandname', function(){
    alert('save band name');
    /*other things*/
 });