jquery find只返回一个元素(在Meteor中)

jquery find returning only one element (in Meteor)

本文关键字:一个 元素 Meteor find 返回 jquery      更新时间:2023-09-26

我有以下链接,当点击应该显示fancyboxes-使用jquery插件在这里:http://fancyapps.com/fancybox/

<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只适用于第一个链接。在Meteor中,我有:

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也可以清楚地看到find只返回第一个元素…这就是问题所在

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

怎么回事?谢谢!

使用this.findAll('a.popup-link')而不是this.find('a.popup-link'),如果你试图使用流星模板方法(不是jQuery find()方法)。

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

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

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

我不确定this.find('a.popup-link')是如何工作的,但我想这取决于thisfind是/做了什么。要使用jQuery方法find,您需要一个jQuery对象。这就是$(this)所做的。从那里,你可以找到"a.p up-link"后代与find