2011-05-06 3 views
0

Voici mon code:problème avec l'application jQuery à un élément qui a été créé par jQuery

$("#ticker-wrapper").rssfeed("http://news.hse.gov.uk/feed/", { 
    limit: 5, 
    linktarget: '_blank', 
    titletag: 'p', 
    snippet: false, 
    header: false, 
    date: false, 
    content: false 
}); 

$('#js-news').ticker({ 
    controls: false, 
    titleText: '' 
}); 

Fondamentalement, un rssfeed est placé à l'intérieur de l'enveloppe, je veux alors .ticker ajouter un effet boursier aux éléments tiré par le .rssfeed.

Le problème semble être que le .rssfeed crée l'id # js-news (où je veux appliquer le .ticker). Ensuite, il semble que le .ticker soit viré avant que #js-news ait été créé. Effectivement, il semble que l'on essaie d'appliquer .ticker à l'élément qui n'a pas encore été créé, ce qui fait que rien n'apparaît.

J'ai regardé dans jQuery .live() et je peux obtenir tout le code fonctionnant sur une commande de clic. Mais j'ai besoin de créer le flux rss et d'appliquer le ticker lorsque la page se charge. Vous ne savez pas quoi faire?

------ Modifier ------

ah ah!

On peut dire qu'elle fonctionne maintenant, je l'ai déplacé la masse principale de .rssfeed dans le html (hors du .ready) et la réécriture du code mnémonique:

var tickerTryCount = 0; 
function addTicker() { 
if (tickerTryCount < 5) { 
    if ($('#js-news').size() > 0) { 
     $('#js-news').ticker({ 
      controls: false, 
      titleText: '' 
     }); 
    } else { 
     tickerTryCount++; 
     setTimeout(addTicker, 1000); 
    } 
} 
} 
+0

quel plugin utilisez-vous? Peut-être que vous pouvez définir un rappel ... –

+0

Ya, que fait la méthode rssfeed? Quel plugin est-ce? – nzifnab

Répondre

0

ah ah!

On peut dire qu'elle fonctionne maintenant, je suis passé la majeure partie principale de .rssfeed dans le html (hors du .ready) et la réécriture du code mnémonique:

var tickerTryCount = 0; 
function addTicker() { 
if (tickerTryCount < 5) { 
if ($('#js-news').size() > 0) { 
    $('#js-news').ticker({ 
     controls: false, 
     titleText: '' 
    }); 
} else { 
    tickerTryCount++; 
    setTimeout(addTicker, 1000); 
} 
} 
} 
+0

Noone likes obtrusive javascript :(Je chercherais une façon plus "agréable" de retirer ça – nzifnab

1

Appelez le symbole() sur ajaxStop()

$("#ticker-wrapper") 
    .rssfeed("http://news.hse.gov.uk/feed/", { 
     limit: 5, 
     linktarget: '_blank', 
     titletag: 'p', 
     snippet: false, 
     header: false, 
     date: false, 
     content: false 
    }) 
.ajaxStop(function() { 
    $('#js-news').ticker({controls: false, titleText: '' }); 
     }); 
+0

Merci beaucoup d'avoir répondu! Bien que tester le code ne semble pas fonctionner. J'ai édité ma question originale avec un long chemin sinueux pour le faire en ce moment. Mais je regarde actuellement plus en .ajaxStop (jamais utilisé auparavant). – tinyBIGideas

Questions connexes