Nano Hash - криптовалюты, майнинг, программирование

Использование Google Feeds API для автоматического создания списка каналов в jquery mobile с помощью касания

У меня возникла проблема с созданием списка элементов канала (с использованием Google Feeds API), вызванного событием касания элемента списка. Я могу вызвать функцию при загрузке страницы, и она отлично работает. Однако, когда я пытаюсь вызвать функцию в событии «нажатие», создается пустая страница.

Вот элемент списка, для которого я хочу инициировать событие (для которого я вызываю событие «tap»):

<li id="welstech" class="listFeeds">
        <a href="#">
         <img src="_images/welstech-logo-db.jpg" alt="WELSTech" />       
         <h2>WELSTech Podcast</h2>
         <p>Discussions about Tech & Ministry</p>
        </a>
       </li>

Вот скрипт, который я разместил внизу html-страницы:

    <script type="text/javascript>
    $(document).on('tap', '.listFeeds', function() {
    listAudioPosts("http://feeds.feedburner.com/welstech");
});
    </script>

Вот функция, которую он вызывает:

function listAudioPosts(feedurl){
    google.load("feeds", "1");
console.log("I'm still going 1");
    function initialize() {
console.log("I'm still going 2");
      var feed = new google.feeds.Feed(feedurl);
      feed.setNumEntries(10)
      var output = '<ul data-role="listview" data-split-icon="info">';
      var name = "welstech";
      feed.load(function(result) {
          if (!result.error) { 
              for (var i = 0; i < result.feed.entries.length; i++) {
                  var entry = result.feed.entries[i];
                  var mediaGroups = result.feed.entries[i].mediaGroups[0].contents[0];
                  var stripContentSnippet = entry.contentSnippet.replace(/[^a-zA-Z 0-9.:-]+/g,'');
                  var stripaContentSnippet = stripContentSnippet.replace('lt--pagingfilter--gt','');
                  output += '<li>';
                  output += '<a href="#">';
                  output += '<h2>' + entry.title + '</h2>';
                  output += '<p>' + stripaContentSnippet + '</p>';
                  output += '</a>';
                  output += '</li>';
                } // loop through all the feeds and create li elements
            } // end of if statement
            output += '</ul>';
            $("#testtouchoutput").html(output).trigger('refresh');
            $.mobile.changePage("#test");
        }); // end feed.load (function(result)
    } // end initialize function
    google.setOnLoadCallback(initialize);   
}

Я знаю, что функция работает, потому что я могу вызвать ее при загрузке страницы с помощью этого скрипта в нижней части моей html-страницы, см. ниже. Я также знаю, что функция доходит до подфункции initialize(), так как я вижу вывод console.log перед этой подфункцией, но не после нее:

<script type="text/javascript">
    listAudioPosts("http://feeds.feedburner.com/welstech");
</script>

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

Я довольно новый программист jquery, поэтому я уверен, что это что-то очевидное. Что мне не хватает?

Спасибо.


Ответы:


1

Вы не закрыли .on, попробуйте что-то вроде этого:

<script type="text/javascript>
    $(document).ready(function() {
        var timeTouched;
        $('.listFeeds').bind('touchstart', function() {
            timeTouched = new Date().getTime();
        }
        $('.listFeeds').bind('touchend', function() {
            if (new Date().getTime() - timeTouched < 200) { // Ended touch within 200 milliseconds, counts as a tap
                listAudioPosts("http://feeds.feedburner.com/welstech");
            }
        });
    });
</script>

Убедитесь, что ваш скрипт указан выше везде, где определен элемент .listFeeds, вы включаете часть $(document).ready(), иначе он не сможет привязать событие к этому элементу.

ОБНОВЛЕНИЕ: нажатие не похоже на событие, обновлено с потенциальным решением.

ОБНОВЛЕНИЕ 2: попытка с .bind вместо .on.

19.08.2012
  • Извините, это была опечатка. У меня правильный код. Также я попытался обернуть $(document).ready(function) с теми же результатами. Однако спасибо за предложение. 19.08.2012
  • @MartinSpriggs не думает, что нажатие - это событие, дополненное возможным решением. 19.08.2012
  • Пробовал код. Неудачно. Ни одно событие не запускается. Не уверен, что вы имеете в виду, не думайте, что кран - это событие. Я знаю, что это работает. У меня есть несколько примеров его работы. Я полагаю, это специфично для jquery mobile. Однако спасибо за попытку помочь. 19.08.2012
  • Я попробую одно окончательное решение, без .on, должно работать с jQuery по умолчанию, обновил свой ответ. 19.08.2012
  • Пробовал и привязку, однако я не думаю, что проблема в обработчике событий. Я знаю, что событие запущено. Это где-то в функции. В моем тестировании при нажатии функция вызывается и доходит до строки прямо перед инициализацией функции. Другими словами, я могу видеть результаты console.log непосредственно перед инициализацией функции, но не после нее. 19.08.2012
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..