我有以下链接,点击时应该显示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
,则无效。
发生了什么事?谢谢!
答案 0 :(得分:3)
如果您尝试使用Meteor模板方法(而不是jQuery find()方法),请使用this.findAll('a.popup-link')
代替this.find('a.popup-link')
。
然而, findAll()返回一个DOM元素数组,我不确定$()是否会接受它作为参数。如果不是这样,你可以循环遍历数组的元素。
答案 1 :(得分:2)
我认为你正在使用不同的find
方法。使用:
$(this).find('a.popup-link').fancybox({
我不确定this.find('a.popup-link')
是如何工作的,但我想这取决于this
和find
是/做了什么。要使用jQuery方法find
,您需要一个jQuery对象。这是$(this)
的作用。从那里,你可以找到&#34; a.popup-link&#34; find
的后代。