Каждый jQuery не работает с определенными классами или с классами в целом? - PullRequest
0 голосов
/ 07 января 2012

Я использую Phonegap для создания небольшого (только для тестирования) приложения Macrumors, и удаленные хосты на самом деле работают (нет таких же ограничений браузера хоста).Я использую функцию jQuery Load() для загрузки содержимого домашней страницы Macrumors http://www.macrumors.com/ в корзину, скрытый div, затем каждую функцию для циклического перебора всех классов статьи, чтобы показать заголовок в окне сссылка на страницу.

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

  • Кто-нибудь может объяснить это нубу, как я?

Вот код:

function onDeviceReady()
{
    // do your thing!
    $('#bin').load('http://www.macrumors.com/ #content');
    $('.article').each(function(){
    var title = $('a').html();
    $('#content').append('<b>'+title+'</b>')

    }); 
}

И материал HTML

    <body onload="onBodyLoad()">
       <div id="bin">
       </div>

       <div id="content">
       </div>

    </body>

Я искренне извиняюсь, если есть какая-то очень простая ошибка, которую я пропускаю;Я майор JS новичок.

1 Ответ

2 голосов
/ 07 января 2012

.load() является асинхронным. Это еще не завершено, когда вы выполняете .each(). Вам нужно поместить ваш .each() и любой другой код, который хочет работать с результатами .load() в обработчике успеха для .load().

Вы бы сделали это так:

function onDeviceReady()
{
    // do your thing!
    $('#bin').load('http://www.macrumors.com/ #content', function() {
        $('.article').each(function(){
            var title = $('a').html();
            $('#content').append('<b>'+title+'</b>')
        }); 
    });
}

Я также предполагаю, что ваша .each() функция работает не совсем правильно. Если вы хотите получить ссылку из каждого объекта .article, вам нужно, чтобы ваш код был таким, чтобы вы могли найти тег <a> только в каждом объекте .article, а не все теги <a> в весь документ:

function onDeviceReady()
{
    // do your thing!
    $('#bin').load('http://www.macrumors.com/ #content', function() {
        $('.article').each(function(){
            var title = $(this).find('a').html();
            $('#content').append('<b>'+title+'</b>')
        }); 
    });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...