将jQuery应用于由jQuery创建的元素的问题

时间:2011-05-06 09:37:15

标签: javascript 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: ''
});

基本上,rssfeed被放置在包装器中,然后我想要.ticker为.rssfeed提取的项目添加一个自动收报机效果。

问题似乎是.rssfeed创建了id#js-news(这是我想要应用.ticker的地方)。然后似乎.ticker在创建#js-news之前被解雇了。实际上它似乎试图将.ticker应用于尚未创建的元素,然后不会出现任何内容。

我一直在研究jQuery .live(),我可以使用click命令处理所有代码。但我需要创建rss feed并在页面加载时应用自动收报机。不太清楚该怎么办?

------编辑------

啊哈!

似乎它现在有效我已经将主要的.rssfeed批量移动到html中(在.ready之外)并重写了代码:

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

2 个答案:

答案 0 :(得分:1)

在ajaxStop()上调用ticker()

$("#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: '' });
        });

答案 1 :(得分:0)

啊哈!

似乎它现在有效我已经将主要的.rssfeed批量移动到html中(在.ready之外)并重写了代码:

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