无法在Template.onRendered中运行Jquery方法?

时间:2015-09-21 21:10:10

标签: meteor

很抱歉,如果这个问题可能听起来很愚蠢,但我收到了一个我无法理解的错误。我在onRendered中有以下代码:

Template.displayItem.onRendered(function(){
  if ($('div.item')[0]) {
    console.log('First item found!');
    $('div.item')[0].hide();
  }
});

现在我可以在控制台中看到正确的输出"First item found!" - 这意味着Jquery选择器正在工作,它在DOM中找到了元素,但是.hide() Jquery方法没有被执行而且我是收到以下错误消息:

Exception from Tracker afterFlush function:
TypeError: $(...)[0].hide is not a function

我不确定导致此行为的原因。有没有人遇到类似的错误?

3 个答案:

答案 0 :(得分:2)

请尝试使用$('div.item').first().hide()。选择器返回的数组将包含DOM对象,这些对象不附加jQuery方法(如hide)。相反,first将返回正确的jQuery对象。

答案 1 :(得分:0)

使用$(this).hide()

shiny-server

答案 2 :(得分:0)

您的错误是因为$('div.hide')[0]是普通节点,而不是jquery对象。

您应该使用this.$('div.hide').first().hide()