2015-08-05 1 views
0

Итак, у меня возникают проблемы с обработчиками событий при взаимодействии после .load(); функция выполнена.Проблема с обработчиками событий из загруженных данных

На странице при щелчке по переключателю обратный вызов загружает внутреннюю страницу/данные, без проблем. Однако, когда я пытаюсь использовать событие on. (Click) из внутренних элементов, функция не работает. Весь код находится на верхнем уровне. Любая идея, почему событие не работает?

$('#radical input[type=radio]').on('click', function() { $('.subradical').load('../page'); 
}); 

Это прекрасно работает, он загружает данные на странице красиво.

$('#radical .subradical li').on('click', function() { 
var one = $(this).attr('id'); 
var two = $(this).attr('pic'); 
var three = $(this).attr('title'); 
$('#radical .display').css('background:url(../imgs/'+two+'); background-size:cover'); 
$('#radical .display .title').text(three); 

}); 

Это не работает.

Чтобы объяснить: «радикал» находится на верхнем уровне. «subradical» пуст и где отображаются загруженные данные (php). Событие нажатия кнопки li из загруженных данных в «субрадикальном» должно инициировать захват attrs и перенос их в «радикальные» элементы отображения, но это не так. Что-нибудь я здесь не вижу?

Спасибо.

EDIT:

Любопытно, что, когда я выполнить эту функцию:

$('#radical .subradical').on('click', function(e) { 
alert('this works');}); 

настороже шоу. Однако, когда я добавляю LI, он терпит неудачу.

$('#radical .subradical li').on('click', function(e) { 
alert('this does not work');}); 
+0

Что входит в консоль инструментов разработчика браузера при запуске этой страницы? –

+0

Привет Карл. Не вижу никаких ошибок. Использование Chrome на Win10. – charless

ответ

0

Если я правильно понимаю ваш вопрос, я думаю, что это, вероятно, потому, что на («щелчок», функция() {}) с двумя операндами применяется только к объектам, которые существуют в момент его называют, а не те созданный (в вашем случае загружен) позже. Я думаю, вам нужно использовать трехпараметрическую форму функции on и называть ее чем-то, что существует, как в

$("#existing-container").on("click", ".selector-for-something-created-later", 
    function(e){ 
    dosomething(); 
    }); 
+0

Фрэнки, по вашему предложению, я добавил 3-ую ногу и, похоже, отлично работает. Приветствия и спасибо. Проголосовал. – charless

 Смежные вопросы

  • Нет связанных вопросов^_^