2016-06-12 2 views
0

フォームを表示して非表示にするjQueryコードのブロックを実行しようとしていますが、Meteorがクライアント側でコードを実行する方法を見つけることができません。ここで私は、現時点で使用しようとしているコードです:MeteorはjQueryコードを実行しません

if (Meteor.isClient) { 
    Template.post.onRendered(function(){ 
     $(document).ready(function(){ 
     $('.replybtn').click(function(){ 
      if($(this).parent().next().css('display') === 'none'){ 
      $(this).parent().next().css('display', 'block'); 
      } else { 
      $(this).parent().next().css('display', 'none'); 
      } 
     }); 
     }); 
    }); 
} 

私もうまくいきませんでしたスクリプトタグ、内のコードを入れて試してみました。不思議なことに、コードのjQuery部分だけがブラウザコンソールにペーストされてもうまく動作します。つまり、jQuery自体ではなく、Meteorでコードを実行する方法がバグである可能性が高いということです。また、私はテンプレート名が正しいことを確認し、これを引き起こしている可能性のある他の問題について考えることはできません。なぜjQueryコードが実行されていない可能性がありますか?

答えて

0

これはおそらく最適な解決策ではありませんが、この問題は、イベントリスナーを作成する関数を定義し、のsetTimeout()で関数を実行する2秒のタイムアウトを設定することによって解決できるようです。

1

Meteorがイベントハンドラをテンプレートに添付するためのシンプルな機能を提供する場合、従来のjQueryパターンを適用しようとしています。ここで流星の方法だろう。

if (Meteor.isClient) { 
    Template.post.events({ 
    '.replybtn click'(e){ 
     const selector = e.target.parentElement.nextSibling; 
     selector.css('display', selector.css('display') === 'none'? 'block' : 'none'); 
    } 
    }); 
}); 
+0

かなり確信してCSSが流星では関数ではありません、私は 'キャッチされない例外TypeErrorを得る:selector.cssがfunction'ではありません(また、.parentと.nextはありませんでした私は 'const selector = e.target.parentElement.nextSibling;')を使用したので、固定コードの – meecoder

+0

です。 '.css'はMeteor関数ではありませんが、MeteorはjQueryをロードするので、クライアント上でjQuery関数を使うことができます。 –

関連する問題