jQuery .on () не работает с длинным динамическим контентом на Android и css ()

0

Я пытаюсь связать взаимодействия с динамически загруженными ссылками:

HTML:

<div id="content">
    My dynamic content will be here.
</div>

JS:

$(function(){
    loadContent();
    $('#content').css('height',400);


    $('#content').on('click','a',function(){
        alert();
    });
});

Это отлично работает на настольном компьютере и с довольно небольшим содержанием на Android.

Но он не будет работать с более длинным контентом на Android (без JS-ошибки на Eclipse). Тем не менее, я не обнаружил никаких других различий, кроме длины контента между рабочими и нерабочими страницами. Поэтому я пытался искусственно ограничить длину контента, а затем он работает нормально.

У вас есть какие-то сведения о том, что происходит?

//РЕДАКТИРОВАТЬ

Я обновил код, поскольку при вводе этого вопроса я сделал некоторые основные ошибки. Эта версия лучше отражает основную проблему.

//РЕДАКТИРОВАТЬ

Наконец, мне удалось изолировать то, что вызвало конфликт. Это связано с обновлением css div после загрузки содержимого. Если я искусственно удаляю атрибут стиля высоты с помощью Weinre, ссылки снова будут доступны для просмотра!

  • 0
    Вам не нужно это делать, но поместите код назначения обработчика события click в блок document.ready после loadContent()
Теги:
event-delegation

2 ответа

0

Я не вижу, как это работает на рабочем столе вообще, потому что вызов on() должен быть внутри обработчика готовности DOM, и имя события должно появиться перед фильтрующим элементом, например:

$(function(){
    loadContent();

    $('#content').on('click', 'a', function(e) {
        alert('something');    
    });
});
  • 0
    Благодарю. Это были опечатки, которые я исправил в вопросе. Но это не работает лучше.
  • 0
    Кстати, я также пытался привязать действие щелчка после загрузки контента, используя отложенный объект. Но это тоже не сработало.
0

Во-первых, исправьте функцию готовности документа для loadContent и on.

Во-вторых, если вы загружаете контент после загрузки страницы. вы должны привязать событие к body как это

$(function(){

    loadContent();

    $('body').on('click', '#content a', function(){
        alert('Hello world!');
    });

});

Ещё вопросы

Сообщество Overcoder
Наверх
Меню