2013-04-08 61 views
1

我有以下的链接,点击上应该显示fancyboxes时 - 在这里使用jQuery插件:http://fancyapps.com/fancybox/jQuery的发现只有一个元素返回(流星)

<div class="boxes"> 
    <a href="/signup.html" class="btn popup-link fancybox.ajax">Sign Up</a> 
    <a href="/signin.html" class="btn popup-link fancybox.ajax">Sign In</a> 
    </div> 

我遇到的问题是, fancybox只适用于第一个链接。 流星,我有:

Template.mytemplate.rendered = function() { 

     console.log($(this.find('a.popup-link'))); 
     $(this.find('a.popup-link')).fancybox({ 
      padding: 18, 
      openMethod: 'changeIn', 
      closeBtn : false, 
      beforeShow: function() { 
       $('input:checkbox').ezMark(); 
       $('select').selectbox(); 

       $('.trigger-ajax').on('click', function(e) { 
        e.preventDefault() 
        $('.fancybox-wrap').animate({ 'left': '-100%'}, 400, function() { 
         $(this).parent().find('.popup-link').trigger('click'); 
        }) 
       }) 
      } 
     }); 

} 

当我点击第一个链接我的fancybox负载如预期,但是当我点击第二个没有任何反应。

通过console.log它也明确表示查找只返回第一个元素...因此,这个问题。

注意它不起作用,如果我只是('a.popup-link')没有find

发生了什么事?谢谢!

回答

3

如果您尝试使用Meteor模板方法(而不是jQuery find()方法),请使用this.findAll('a.popup-link')而不是this.find('a.popup-link')

但是,findAll()返回一个DOM元素数组,我不确定是否$()将接受作为参数。如果没有,你可以循环访问数组的元素。

+1

'jQuery()'将接受一个dom元素数组。 – 2013-04-08 17:43:53

+0

谢谢findAll在$()内为我工作。我不知道什么findAll是因为我认为我调用jquery“find”方法 – algorithmicCoder 2013-04-08 17:53:02

2

我想你正在使用不同的find方法。用途:

$(this).find('a.popup-link').fancybox({ 

我不知道怎么this.find('a.popup-link')是有史以来的工作,但我想这取决于什么thisfind是/做。要使用jQuery方法find,您需要一个jQuery对象。这就是$(this)所做的。从那里,你可以找到“a.popup-link”后代find

+0

@SetSailMedia呃,我不确定我会打电话给它。这显然是工作(在'console.log'和选择器部分相同的jQuery代码)。但这一切都取决于这是什么。对于我们所知道的,它是'window'(或者一个对象),并且可以定义一个'find'方法。 – Ian 2013-04-08 17:37:08

+0

我认为“这个”在这个例子中指的是一个流星物体,而“find”指的是一个流星的具体事物......因此是怪异的行为。感谢您的回应! – algorithmicCoder 2013-04-08 17:55:10

+0

@algorithmicCoder啊好吧,从来没有用过流星,只是注意到那种奇怪的语法。 – Ian 2013-04-08 17:56:35

相关问题