LINUX.ORG.RU

jquery + динамические ссылки


0

1

добрый день. у меня динамически с помощью jquery $(«#some_id»).append(«<a href='#'...>test</a>»); формируются ссылки, но почему-то jquery по вызову $(«a»).click(... их не видит. а все остальные ссылки, созданные не динамически, работают нормально и их можно вызвать таким способом. может необходимо новые ссылки каким-то образом зарегистрировать чтоб jquery их увидел?

спасибо.


> но почему-то jquery по вызову $(«a»).click(... их не видит

а по вызову:

$('a').each(....) — видит?

неработает именно $.fn.click() ??

user_id_68054 ★★★★★
()
Ответ на: комментарий от vkg2

Что пишет:

console.log($("a"));
console.log($("a", $("#some_id")));

RR
()
Ответ на: комментарий от RR

> лучше использовать: $(«a»).delegate(«click», function () {})

...ну эт вы нафонтазировали :-) :-)

цитирую http://api.jquery.com/delegate/

.delegate( selector, eventType, handler )

selectorA selector to filter the elements that trigger the event. eventTypeA string containing one or more space-separated JavaScript event types, such as «click» or «keydown,» or custom event names. handlerA function to execute at the time the event is triggered.

---

.delegate( selector, eventType, eventData, handler )

selectorA selector to filter the elements that trigger the event. eventTypeA string containing one or more space-separated JavaScript event types, such as «click» or «keydown,» or custom event names. eventDataA map of data that will be passed to the event handler. handlerA function to execute at the time the event is triggered.

---

.delegate( selector, events )

selectorA selector to filter the elements that trigger the event. eventsA map of one or more event types and functions to execute for them.

....а вот схемы «„“.delegate( eventType, handler )»«» увы нет :-) , в отличии от $.fn.live()

однако изначальный сабж сравно есть враньё... как было уже выше сказано :-)

user_id_68054 ★★★★★
()
Ответ на: комментарий от user_id_68054

...ну эт вы нафонтазировали :-) :-)

Точно, пропустил контекст =).

однако изначальный сабж сравно есть враньё... как было уже выше >>сказано :-)

А если:

$(function() {
                        // создаём!
                        $('#experiment').append('; <a href="#dynamic-sample">Динамическая ссылка<\/a>');
                        
                        // проверяем!
                        $('a').each(function() {
                            $(this).css('background', 'lightgrey');
                            $(this).css('color', 'green');
                            console.log('Найдена вот такая ссылка: ' + $(this).prop('href'));
                        });

                        // создаём!
                        $('#experiment').append('; <a href="#dynamic-sample">Динамическая ссылка<\/a>');
                    })

RR
()
Ответ на: комментарий от RR

ну это можно и не проверять! :-) ...тут оно всё ясно из причинно следственной связи

команды же сверху-вниз выполняются :-) а не одновременно

user_id_68054 ★★★★★
()
Ответ на: комментарий от user_id_68054

Что-то я забывчив стал, пропустил табличку сарказм. У ТС сначала вешался обработчик на клик, а потом динамически добавлялись новые элементы, естественно что динамически добавленные не отбираются - ведь они еще не добавлены в дом.

RR
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.