我在页面上有一个RSS链接/ URL列表,我试图使用jQuery的.each功能循环。在该循环内部我试图使用.ajax功能将链接发送到将运行的php页面,然后返回1表示成功或0表示失败。我的.ajax'成功'功能将使用此1或0将页面上链接的颜色更改为绿色(如果成功)和红色(如果不成功)。
以下是我的代码不起作用。这有什么问题?
jQuery(document).ready(function($) {
$('#fetch_rss').click(
function() {
$('tr.rssrow').each(
function() {
var link = $('a.rsslink', this).attr('feed_link');
$.ajax({
url: "rss_process.php",
type: "POST",
data: {'link':link},
success: function(msg) {
if (msg > 1) {
$('td.link', this).addClass('green');
} else {
$('td.link', this).addClass('green');
}
},
fail: function(msg) {
$('td.link', this).addClass('orange');
}
});
} // .each callback
); // .each
} // .click callback
); // .click
});
答案 0 :(得分:1)
这个内部的ajax回调并没有引用原来的这个。
您应该将此添加到首选项的$ .ajax()哈希值中:
context : this
上的“上下文”
您的代码出现的另一个问题是,您经常使用此代码而不是$(this)。例如:
var link = $('a.rsslink', this).attr('feed_link');
应写成:
var link = $('a.rsslink', $(this)).attr('feed_link');
同样的:
$('td.link', this).addClass('green');
应该是:
$('td.link', $(this)).addClass('green');
还有其他地方你也这样做。
另一件事。以下内容始终将类“green”添加到td.link:
if (msg > 1) {
$('td.link', this).addClass('green');
} else {
$('td.link', this).addClass('green');
}
你应该用其他类来对待else部分(橙色?)。