2016-06-12 123 views
0

我試圖運行一個顯示和隱藏窗體的jQuery代碼塊,但無法找到讓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部分本身工作正常 - 這意味着該錯誤可能在我如何在Meteor中運行代碼,而不是jQuery本身。此外,我已確認模板名稱是正確的,並且不能考慮可能導致此問題的任何其他問題。關於爲什麼jQuery代碼可能沒有運行的任何想法?

回答

0

這可能不是最好的解決方案,但似乎可以通過定義創建事件偵聽器的函數來解決此問題,然後設置2秒超時以運行函數setTimeout()

1

當您嘗試應用傳統的jQuery模式時,Meteor提供了一個簡單的工具將事件處理程序附加到模板。這裏將是流星方式:

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是不是流星的功能,我得到一個'遺漏的類型錯誤:selector.css不是function'(此外,.parent和。接下來不函數,所以我用'const selector = e.target.parentElement.nextSibling;') – meecoder

+0

ok,固定代碼。 '.css'不是Meteor函數,但Meteor加載jQuery,所以你可以在客戶端使用jQuery函數。 –