1

クリックすると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 が最初のリンクに対してのみ機能することです。流星では、私は持っています:

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 が期待どおりに読み込まれますが、2 番目のリンクをクリックしても何も起こりません。

console.log を介して、検索が最初の要素のみを返していることも明らかです...したがって問題です。

('a.popup-link')なしで行うだけでは機能しないことに注意してくださいfind

どうしたの?ありがとう!

4

2 に答える 2

3

Meteor テンプレート メソッド (jQuery のfind()メソッドではなく) を使用しようとしていた場合は、this.findAll('a.popup-link')代わりに使用します。this.find('a.popup-link')

ただし、findAll()は、$() がパラメーターとして受け入れるかどうかわからない DOM 要素の配列を返します。そうでない場合は、配列の要素をループするだけです。

于 2013-04-08T17:41:43.427 に答える
2

find別の方法を使用していると思います。使用する:

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

どのように機能していたのかはわかりませんが、何があったか/何をthis.find('a.popup-link')したかによると思います。jQuery メソッドを使用するには、jQuery オブジェクトが必要です。それがそうです。そこから、「a.popup-link」の子孫を で見つけることができます。thisfindfind$(this)find

于 2013-04-08T17:34:30.990 に答える