2013-04-08 58 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

相關問題