Intereting Posts
Javascript вычисляет значения на основе отмеченных опций Определите конкретное изображение, загрузите, затем сделайте что-нибудь … Создайте живой предварительный просмотр изображения (перед его загрузкой) с помощью JQuery jQuery Производительность загрузки AJAX для больших текстовых полей Rails 3 AJAX игнорирует аутентификацию Показывать процентное соотношение в Jquery progressbar Сложность, связанная с обработчиком событий для динамически создаваемых модальных элементов windows Как передать дополнительные аргументы для обратных вызовов, а также получить доступ к параметрам по умолчанию? jQuery, html5, append () / appendTo () и IE Как отправить текущий номер страницы в запросе Ajax $ .connection undefined + signalR 0.5.3 + MVC4 Создайте миниатюру / снимок видеофайла, выбранного вводом файла в определенное время Использование Fullcalendar для отображения календаря Google. Описание события Поле в подсказке Не могу понять, почему Chrome / Safari не может получить ScrollHeight прямо здесь Ajax Combo box с меткой `Please Wait` для данных Loding

jquery find возвращает только один элемент (в Meteor)

У меня есть следующие ссылки, которые при нажатии на них должны показывать fancyboxes – с помощью плагина jquery: http://fancyapps.com/fancybox/

 

Проблема, с которой я сталкиваюсь, заключается в том, что 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 также ясно, что find возвращает только первый элемент … следовательно, проблема.

Обратите внимание, что это не работает, если я просто делаю ('a.popup-link') без find .

В чем дело? Спасибо!

Используйте this.findAll('a.popup-link') вместо this.find('a.popup-link') если вы пытаетесь использовать метод шаблона Meteor (а не метод jQuery find () ).

Однако findAll () возвращает массив элементов DOM, я не уверен, что $ () примет в качестве параметра. Если это не так, вы можете просто пропустить элементы массива.

Я думаю, вы используете другой метод find . Использование:

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

Я не уверен, как this.find('a.popup-link') когда-либо работал, но я думаю, это зависит от того, что this и find . Чтобы использовать метод jQuery find , вам нужен объект jQuery. Это то, что делает $(this) . Оттуда вы можете найти потомков «a.popup-link» с помощью find .