2011-11-24 59 views
2

我有一个页面上的RSS链接/ URL列表,我试图循环使用jQuery的.each功能。在这个循环内我试图使用.ajax功能发送链接到一个php页面,它将运行,然后返回1表示成功或0表示失败。我的.ajax'success'函数将使用此1或0将页面上链接的颜色更改为绿色,如果不成功,则为红色。jQuery:在.each()中使用.ajax()

下面是我的代码不起作用。它有什么问题?

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

我可能是错的,但通常你必须将一个字符串传递给'data'属性。 – danyloid

+0

“feed_link”不是允许的属性名称,所以我想知道这是否是问题所在。我们需要知道发生了什么样的问题。和HTML一起发布也将有所帮助。 – dnuttle

回答

1

这里面的ajax回调并不是指原来的这个。偏好

你应该添加到您的$。阿贾克斯()哈希:在the jQuery docs

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'); 

还有其他地方你也这样做。

另一件事。以下总是将类“绿色”添加到td.link:

if (msg > 1) { 
    $('td.link', this).addClass('green'); 
} else { 
    $('td.link', this).addClass('green'); 
} 

您应该使用不同的类(橙色?)处理else部分。

+0

我最诚挚的'谢谢你'对这个问题的快速回答,Kristinn!这解决了它。另外,感谢您使用'this'的提示。我不知道。 –

+0

非常欢迎。 –

+0

如果您将我的答案标记为正确答案,并点击向上箭头给出答案,我将不胜感激。 :-) 谢谢。 :-) –

相关问题