我有一个页面,其中一些推文是从Twitter动态提取的。这就像是一个新闻自动收报机。整个页面都在这里http://jsfiddle.net/R6D4R/。
页面在jsfiddle中工作,因为内容已经在那里,而实时网站上的内容动态地放入div中。 ticker()函数仍然有效,但if语句没有生效。任何人都可以帮我解决这个问题吗?
编辑:
对不起,伙计们,我没有澄清为什么if语句适用。该函数可以自行运行,但我不想在只有一条推文的情况下运行该函数。这就是我if (tickerli.length != 1)
的原因。我应该使用> 1而不是!= 1,但你明白了
答案 0 :(得分:0)
http://api.jquery.com/delegate/
那是票!!代表不止一次挽救了我的生命。
答案 1 :(得分:0)
好的,完全重做我的回答,因为我对你的要求感到困惑:
要处理ticker()
函数中动态添加的元素,您必须在每次调用函数时重新评估您的选择器,如下所示:
$(function(){
function ticker() {
var tickerLi = $('.tweet_list li');
if (tickerLi.length > 1) {
tickerLi.first().fadeOut(function() {
$(this).appendTo($('.tweet_list')).fadeIn();
});
}
}
setInterval(ticker, 2000);
}
当我认为你想要动态添加元素的事件处理帮助时,这是之前的答案。
要安装将处理将来动态添加的元素的事件处理程序,您需要使用委派事件处理。要做的,你可以使用:
$(static parent selector).on(event, selector of dynamic element, fn);
注意:.on()
有两种形式,一种是静态的,一种是动态的(使用委托事件处理)。要使用动态事件处理,请将.on()
处理程序绑定到非动态的父元素,然后将(作为第二个参数传递给.on()
,一个与动态元素匹配的选择器)。
在你的jsFiddle中,对于推文文本的点击处理程序,这将是这样的:
$('twitter-container-34').on('click', '.tweet_text', function() {
// your event handling code here
});
注意:在jQuery v1.7中添加了jQuery .on()
。对于早期版本的jQuery,请使用.delegate()
。