Задать вопрос
@MarvinD

Почему не срабатывает клик по вложенному элементу (jQuery)?

Очень прошу прощения, что несколько сумбурно задаю вопрос, но я вообще не профи (любитель очень начинающий) в JS, jQuery и всем таком.

В скрипт test.php в div с id=pictures с помощью jQuery подгружается вывод другого скрипта (pictures.php) с помощью:
$(document).ready(function() {
    $("#pictures").load('pictures.php');
});


В скрипте test.php заранее прописан div:
echo '<div id="pictures">Ждем...</div>';

Скрипт pictures.php генерит примерно такое:
...
echo '<img class="kartinka" src="images/'.$var[$testNumber][2].'" id="'.$var[$testNumber][1].'" /><img class="kartinka" src="images/'.$var[$testNumber][4].'" id="'.$var[$testNumber][3].'" />';
...


Что-то вроде этого:
<img class="kartinka" src="images/maika.jpg" id="1"><img class="kartinka" src="images/laika.jpg" id="2">


В браузере открывается test.php. В зависимости от того, на какую картинку кликнуть, на сервер ajax отправляется id картинки. Если id картинки каким-то образом устраивает/не устраивает, скрипт pictures.php отправляет новые картинки. Все просто. Я для жены (она в дет. саду работает) делаю страничку, чтобы ей удобнее было детей тестировать, как они отличают похожие по произношению слова.

Ну и параллельно изучаю работу ajax, поэтому вариант отправлять просто формой в этот же скрипт не хотел бы ваять. Все умеют ajax, а я пока нет :(

В скрипте test.php:
Проблема в том, что по какой-то причине вот этот код:

$('.kartinka').click(function (event) {
		console.log('kartinka target: ' + event.target);
		console.log('kartinka elem id: ' + event.target.id);
});


не отлавливает нажатия на картинку. В Chrome тишина.

А вот этот:
$('#pictures').click(function (event) {
		console.log('pictures target: ' + event.target);
		console.log('pictures elem id: ' + event.target.id);
	});

- отлавливает.

Также не срабатывает:
$("img").click(function(){
...

Других картинок на странице test.php нет, поэтому тут уж не перепутаешь. Нет нажатий на img! и все тут.

При этом срабатывает (в скрипте test.php сделал кнопку с id=btnCheck):
$("#btnCheck").click(function(){
...
answer = $("#pictures img").attr('id');
...


Это отладочное все, простите за сумбур! В общем, делаю вывод, что у меня jQuery не может напрямую обратиться к подгруженным картинкам! Через div с шв=pictures, который изначально есть в скрипте, id картинок ловятся. Можете подсказать, как так? Почему картинки, которые даже в браузере нормально появляются, невозможно отловить напрямую по из id?
  • Вопрос задан
  • 751 просмотр
Подписаться 1 Оценить Комментировать
Решения вопроса 2
@SharuPoNemnogu
не язык плохой, программисты такие...
$("#pictures").on('click', '.kartinka', function(e) {
    ....
});
Ответ написан
e_svirsky
@e_svirsky
Web Developer
Если я всё правильно понял - вам нужно вот это:
api.jquery.com/delegate
Элементы динамически появляются, следовательно нужен делегат который будет следить за этим.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы