[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Получение id из class'a
SmorodinKA
Добрый день. У меня возник такой вопрос. На карте Яндекс у меня создаются метки из xml-файла, где в шаблон балуна прописывается ссылка вида:

<a rel="nofollow" href="#" class="compare_link id$[metaDataProperty.AnyMetaData.id]">Сравнение</a>


Как мне получить теперь с помощью JQuery id метки из класса при клике на ссылку? Спасибо.
sergeiss
Давай ты сам для начала выскажи свои идеи. В виде слов. По какому пути ты бы пошел?

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
SmorodinKA
sergeiss
Честно, даже представить не могу, натолкни на правильное направление.
sergeiss
Цитата (SmorodinKA @ 22.03.2014 - 11:26)
На карте Яндекс у меня создаются метки из xml-файла, где в шаблон балуна прописывается ссылка вида:

Я так думаю, что лучше для начала приделать руки по-другому тому человеку, что делал эту ссылку :) И получить примерно такую ссылку:
<a rel="nofollow" href="#" class="compare_link" data-id="metaDataProperty.AnyMetaData.id">Сравнение</a>

Из нее можно будет достать данные легко и просто.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
AllesKlar
sergeiss
Ни разу не работал с картами Яндекс, но, возмлжно, именно первоначальный, неудобный формат ссылки требуется. Иначе карта работать не будет коректно.

_____________
[продано копирайтерам]
sergeiss
AllesKlar, нет не так. Я тут как раз "по случаю" wink.gif работаю именно с Яндекс-картами.
Цитата (SmorodinKA @ 22.03.2014 - 11:26)
...где в шаблон балуна прописывается ссылка вида...

туда программер может записать совершенно произвольную хрень. То есть, от самих карт содержание не зависит вообще никак.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
SmorodinKA
sergeiss
Вот в том-то и дело что сервер Яндекс отрезает data-id. Я так пытался, мне в тех. поддержке написали, что такой вариант не возможен. Я долго вел с ними переписку и мне пришло такое письмо:

Все, мы все узнали. Штука, которая обрабатывает ваш xml на сервере отрезает вообще все кастомные атрибуты у ссылок.

Поэтому придется придумывать обход для задания id элементам.

В частности вы можете выставлять им несколько css-классов, один из которых будет как раз идентификатором.

Что-то в стиле

<a rel="nofollow" href="#" class="compare_link id$[metaDataProperty.AnyMetaData.id]">Сравнение</a></div>

И уже потом для получения id расковыривать классы
sergeiss
Ну.... Если всё так плохо....

Вот тебе для работы мысли. Сделай для начала один такой объект и запусти
alert( $('.compare_link').attr('class') )


_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
SmorodinKA
sergeiss
Самая первая мысль, что пришла :D

Пишем ссылку, как:
<a rel="nofollow" href="#" class="compare_link id-$[metaDataProperty.AnyMetaData.id]">Сравнение</a></div>


И получаем:
   jQuery(document).on('click', '.compare_link', function (e) {
str = String($('.compare_link').attr('class'));
id_obj = str.split('-');
alert(parseInt(id_obj[1]));
});

sergeiss
Мысль верная, вобщем-то smile.gif Только лучше сначала по пробелу разделить на части и каждую часть по отдельности обрабатывать. Тогда ты можешь большое количество информации заложить.

И совет - в такой ситуации лучше делать переменные в фукнции локальными. Для этого достаточно написать перед ними ключевое слово var. Иначе ты можешь попортить какие-нибудь внешние переменные. Тут дело в том, что, в отличие от ПХП, если в JS ты просто используешь переменную (как в твоем коде), то она становится глобальной.

PS. И еще. Я бы лучше использовал delegate(), а не on(). Тогда даже при динамическом создании ссылок у них будут обработчики.
И еще smile.gif Отмени дефолтное поведение ссылки. По-моему, тут это нужно.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
SmorodinKA
sergeiss
Спасибо за помощь и советы.

А по поводу дефолтного поведения ссылки, то я его отменить не могу все из-за пресловутого Яндекс Map API, который в этом случает просто вырежет ссылку из шаблона балуна.

Такой вот он этот API blink.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.