我有一个提要页面,需要将点击处理程序应用于rss提要中的每个链接。
我正在使用 ZRSSfeed,这很棒,但它不会进行回调,因此 .click() 函数在 rss 内容到达之前很久就运行了
这里有一个小提琴:
http://jsfiddle.net/PMtCN/
非常感谢
如果我了解这个问题,您想将点击处理程序附加到结果,但不知道何时加载内容。 如果是这种情况,那么只需使用 live:
说明:将处理程序附加到 与 当前选择器,现在和在 前途。
http://jsfiddle.net/PMtCN/11/
jQuery('#linkwidget a').live("click",function(){
alert('Hello World');
return false;
});
最新版本具有回调函数,因此您现在可以在加载源项后对源项执行操作。
以下示例将 Feed 标题长度限制为 14 个字符:
$(document).ready(function () {
$('#test').rssfeed('http://feeds.reuters.com/reuters/oddlyEnoughNews',{},function(e) {
$('h4 a',e).each(function(i) {
var title = $(this).text();
if (title.length > 14) $(this).text(title.substring(0,14)+'...');
});
});
});
http://www.zazar.net/developers/jquery/zrssfeed
如果您无法使用回调,并且想要单独将 click 函数应用于每个匹配节点,则可以使用这样的代码,
var COM_MYSITE_RSS_CHECK;
var COM_MYSITE_RSS_CHECK_COUNT = 0;
var COM_MYSITE_RSS_CHECK_FREQ = 100;
var COM_MYSITE_RSS_CHECK_MAX = 100;
function wait_for_rss(){
if (jQuery('#linkwidget a').length > 0 || COM_MYSITE_RSS_CHECK_COUNT > COM_MYSITE_RSS_CHECK_MAX )
{
clearInterval(COM_MYSITE_RSS_CHECK);
jQuery('#linkwidget a').click(function(){
alert('Hello World');
return false;
});
}
COM_MYSITE_RSS_CHECK_COUNT++;
}
然后在调用 Ajax 请求后,
COM_MYSITE_RSS_CHECK = setInterval(wait_for_rss, COM_MYSITE_RSS_CHECK_FREQ);
或者,如果不需要单独绑定到元素,则可以查看绑定函数的 jQuery Live 方法,该方法不要求在绑定之前已经创建了元素。