Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Получение id элемента, родитель которого динамически меняет класс (https://javascript.ru/forum/jquery/20628-poluchenie-id-ehlementa-roditel-kotorogo-dinamicheski-menyaet-klass.html)

Serzhik 11.08.2011 17:34

Получение id элемента, родитель которого динамически меняет класс
 
Всем доброго! Подскажите, плиз:
Есть таблица:
<table class="interface">
   <tr class="any over">
       <td><a class="element" id="123">ссылка 1</a></td>
   </tr>
   <tr class="any">
       <td><a class="element" id="234">ссылка 2</a></td>
   </tr>
   <tr class="any">
       <td><a class="element" id="345">ссылка 3</a></td>
   </tr>


Я хочу вывести при наведении на ссылку подсказку с помощью qTip. Для этого:
$(document).ready(function(){
    $('.element').qtip({
           content: {
                text: 'Подождите...',
                ajax: {
                    url: 'ajax.php?ELEMENT_ID='+$('.interface').find('.over').children('.element').attr('id')
                }
            }
    });
});

Класс over устанавливается динамически при наведении мышкой на строку. Хочется, чтобы при наведении мышкой на ссылку скрипт вытаскивал id этой ссылки из подсвеченной строки. Но в таком виде скрипт не работает, не находит over...
Пробовал так
$(document).ready(function(){
    $('.element').qtip({
           content: {
                text: 'Подождите...',
                ajax: {
                    url: 'ajax.php?ELEMENT_ID='+$(this).attr('id')
                }
            }
    });
});

Но в this, естественно, хранится window, а не ссылка на нужный объект

devote 11.08.2011 17:36

$('.interface .over .element').attr('id');

Serzhik 11.08.2011 17:39

Пробовал, не видит over. Соответственно, возвращает undefined

devote 11.08.2011 17:41

должен видеть попробуй вывести алертом:
alert($('.interface .over .element')[0].innerHTML); // должен вывести имя ссылки, в противном случае что-то у тебя не так.

devote 11.08.2011 17:44

<script type="text/javascript" src="http://code.jquery.com/jquery-1.6.2.min.js"></script>
<table class="interface"> 
   <tr class="any over"> 
       <td><a class="element" id="123">ссылка 1</a></td> 
   </tr> 
   <tr class="any"> 
       <td><a class="element" id="234">ссылка 2</a></td> 
   </tr>
</table>
<script type="text/javascript">
    alert($('.interface .over .element')[0].innerHTML);
</script>

devote 11.08.2011 17:49

запусти то что я прислал, увидешь что покажет в алерте "ссылка 1"

Serzhik 11.08.2011 17:56

У меня чуть другая ситуация: на момент формирования страницы нет элемента с over.

<script type="text/javascript" src="http://code.jquery.com/jquery-1.6.2.min.js"></script>
<table class="interface"> 
   <tr class="any"> 
       <td><a class="element" id="123">ссылка 1</a></td> 
   </tr> 
   <tr class="any"> 
       <td><a class="element" id="234">ссылка 2</a></td> 
   </tr>
</table>
<script>
$(document).ready(function(){
    $('.any').hover(
        function() {
            $(this).addClass('over');
        },
        function() {
            $(this).removeClass('over');
        }
    );
    $('.element').qtip({
           content: {
                text: 'Подождите...',
                ajax: {
                    url: 'ajax.php?ELEMENT_ID='+$('.interface .over .element').attr('id');
                }
            }
    });

});
</script>

А твой код работает - не спорю, посмотрел:)

devote 11.08.2011 17:58

Ну значит класс к элементу не применяется, и ты пытаешься загрузить до того как класс был назначен.

Serzhik 11.08.2011 18:04

Вот я примерно это и имел в виду: скрипт не видит over из-за того, что класс назначается динамически.
А второй вопрос: можно ли как-то сослаться на объект, к которому привязывается qTip?
Что-то типа:
$(document).ready(function(){
    $('.element').qtip({
           content: {
                text: 'Подождите...',
                ajax: {
                    url: 'ajax.php?ELEMENT_ID='+$(this).attr('id')
                }
            }
    });
});

devote 11.08.2011 18:13

Это надо документацию читать по этому плагину

Serzhik 12.08.2011 12:15

Эм... А при чем тут документация по плагину? По-моему, это стандартное JS-замыкание... Вот только слаб я в них:( Читаю, но не понимаю, как использовать в моем случае. Негде сохранить текущий объект (аля var _self = this) в данном случае

devote 12.08.2011 12:51

Цитата:

Сообщение от Serzhik
Эм... А при чем тут документация по плагину?

в этом и проблема что надо что бы этот qtip подставлял туда тебе нужные данные, или хотя бы тебе дал возможность это сделать вызывая какой нить callback, а именно для этого нужно читать доку по нему что бы узнать вызывает ли он callback какой нить перед показом этой подсказки или перед запросом на сервер или еще чего, либо рыть код этого тултипа и смотреть что он делает...

Serzhik 12.08.2011 13:03

О, понял мысль! Про callback не подумал... Ща пороюсь:) Спасиб!


Часовой пояс GMT +3, время: 00:49.