jQuery $ (). каждый вместо $ .each () - PullRequest
2 голосов
/ 21 марта 2011

Я пишу плагин, используя стандартный шаблон авторинга для jQuery, использую методы для решения различных задач, и у меня возникает проблема с .each ().

Я понимаю из документации оразница между $.each() и $(selector).each(), но я не могу понять, как решить мою проблему ...

В моем коде у меня есть метод, который возвращает объект, который был сохранен с использованием $(selector).data()на котором я могу запустить $ .each () следующим образом:

$.each($(selector).maps('getdetails'), function(key, value){/* stuff here */});

Однако, в контексте цепочки JQuery, это не так, как должно быть, и я не могу понять, как это сделатьэто так:

$(selector).maps('getdetails').each(function(key, value){/* stuff here */});

Для удобства использования и простоты использования, последний предпочтительнее.Тем не менее, я всегда получаю следующую ошибку:

TypeError: $(selector).maps("getdetails").each is not a function

Вот этот метод изнутри объекта переменной:

getdetails: function(){
    return $(this).data('maps').details;
},

(Да, прежде чем вы это скажете, язнаю, что это неверный JS, но, как я уже сказал, он правильно обернут в переменную {} в моем коде.)

Кто-нибудь знает, как я могу манипулировать этим объектом в объект jQuery, который последний.each() функция будет перебирать?

Ответы [ 2 ]

4 голосов
/ 21 марта 2011

Полагаю, details - это массив, поэтому details.each не будет работать. Вам нужно будет преобразовать details в jQuery.init объект (карту объектов jQueried), что можно сделать, просто бросив его в функцию jQuery:

return $( $(this).data('maps').details );
0 голосов
/ 21 марта 2011

Вы забыли "#" или "." для обозначения идентификатора или класса соответственно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...