jquery события на json анализируются через попкорн

Кто-нибудь знает, почему события jquery не работают с данными json, проанализированными с помощью JSON Parser Popcorn.js?

Я хочу вызвать функцию при нажатии на ссылку. И рассматриваемая ссылка находится в файле json. Файл, кажется, проанализирован, как и ожидалось, и сноски попкорна появляются, как и ожидалось. Я могу перейти по проанализированной ссылке, но событие не запущено.

Вот фрагмент кода, над которым я работаю:

<script>
$(function() {

     var popcorn = Popcorn("#video");
     popcorn.parseJSON ("data/data.json");

     $("a[href='gohere.html']").click(function() {
           alert("clicked!"); //should display the message, but doesn't         
     });
});
</script>

И файл JSON выглядит так:

{
 "data": [
    {
        "footnote": {
            "start":"1",
            "end":"3",
            "target":"footnote-container",
            "text":"<a href='gohere.html'>Go Here</a>"
        }
    },
    {
        "footnote": {
            "start":4,
            "end":7,
            "target":"footnote-container",
            "text":"Another piece of text."
        }
    }
  ]
}

Буду очень признателен за любую помощь!

2 ответа

Решение

Использовать делегирование с .on()

 $('body')on('click','a[href="gohere.html"]',function() {
       alert("clicked!"); //should display the message, but doesn't         
 });

замена 'body'(Не обязательно, но более эффективно) с ближайшим предком, который статичен и существует во время готовности. Это свяжет обработчик события с этим элементом, который, в свою очередь, прослушивает событие, когда оно всплывает от данного селектора.

Попробуйте использовать jQuery .on () внутри функции обратного вызова из parseJSON или какой-то другой ajax производное.

$("a[href='gohere.html']").on('click', function() {
       alert("clicked!");        
 });
Другие вопросы по тегам