Загрузка jQuery XML, а затем эффект внутреннего затухания - PullRequest
0 голосов
/ 22 апреля 2010

Я думаю, что могу объяснить себя без кода, поэтому для краткости здесь мы идем:

Я использую jquery для извлечения данных из xml и помещаю их в ul на странице с каждой записью xml как li. Это работает отлично!

Однако, то, что я пытаюсь сделать потом, это использовать плагин innerfade, чтобы сделать простую анимацию между каждым из li. Однако он не работает, так как он все еще просто загружает статический список с каждым видимым элементом (тогда как, если работает innerfade, он отображает только первое ...., затем исчезает во втором и т. Д.)

Однако это не проблема внутреннего затухания, потому что если я добавлю список вручную на страницу (не вставляя его с помощью jquery), то внутреннее затухание будет работать нормально.

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

Можно ли сделать так, чтобы jquery извлекал данные из xml, затем вставлял их на страницу, а затем заставлял их работать с внутренними затуханиями - это волшебство? Или я думаю об этом не так?

XML-код:

$.ajax({
    type: "GET",
    url: "xml/playlist.xml",
    dataType: "xml",
    success: function(xml) {
        $(xml).find('song').each(function(){
            var name = $(this).attr('title');
            var date = $(this).attr('artist');
            var message = $(this).attr('path');
            $('<li></li>').html('<span id="an_name">'+name+'</span><span id="an_date">'+date+'</span><span id="an_message">'+message+'</span>').appendTo('#anniversary');

        });
    }
});

код внутреннего затухания:

<script type="text/javascript">
    jQuery.noConflict();
    jQuery(document).ready(
        function(){ 
            jQuery('#anniversary').innerfade({
            speed: 1000,
            timeout: 5000,
            type: 'sequence',
        });
    });

Ответы [ 2 ]

1 голос
/ 22 апреля 2010

Да, поместите код внутреннего затухания в полную функцию.

$.ajax({
    type: "GET",
    url: "xml/playlist.xml",
    dataType: "xml",
    complete: function(){ 
            jQuery('#anniversary').innerfade({
            speed: 1000,
            timeout: 5000,
            type: 'sequence',
        });,

    success: function(xml) {
        $(xml).find('song').each(function(){
            var name = $(this).attr('title');
            var date = $(this).attr('artist');
            var message = $(this).attr('path');
            $('<li></li>').html('<span id="an_name">'+name+'</span><span id="an_date">'+date+'</span><span id="an_message">'+message+'</span>').appendTo('#anniversary');

        });
    }
});
0 голосов
/ 10 января 2014
var name = $(this).attr('title');

Вы должны использовать метод .find () intead of .attr ()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...