rails + jquery函数回调问题

时间:2012-08-16 21:35:45

标签: jquery ruby-on-rails

在我的页面上,我想检查用户是否已登录,如果他是,那么我允许用户执行各种操作(例如上传下面的照片)。要检查用户是否已登录,我在jquery中编写了这个简单的函数。

$(document).ready(function(){

 function checkLogin(callback){
  <% if !current_user %>
    $.colorbox({href:"/signup", width: "400px", height: "200px"});
    var status = false;
    callback(status)
  <% end %>
 }

当我想检查用户是否登录时,我用以下方式调用上面的内容:

$(".upload-pics").click(function(){
  checkLogin(function(c){
    if(c == false){
      return false;
    }
  });
  // open colorbox to upload pictures
  $("a.upload-pics").colorbox();
})

问题是,每次我调用checkLogin并说明用户是否未登录时,“return false”并不会停止执行其余代码,这意味着无论如何都会触发上传图片的颜色框代码。真正奇怪的部分是“返回false”确实被执行但这并不会阻止其余的代码执行。我的代码有问题吗?感谢。

2 个答案:

答案 0 :(得分:0)

因为它里面的另一个功能.. 做

$(".upload-pics").click(function(e){

    var x = checkLogin(function(c){
       if(c == false){
          return false;
       }
    });

    if(!x){
        return false;
    }else{        
       $("a.upload-pics").colorbox();
    }
})

答案 1 :(得分:0)

嗯,这里感觉有点傻。我没有进入回调和东西......这是一种非常简单的方式。感谢有条不紊地把我指向正确的方向。

function checkLogin(){
  <% if !current_user %>
    $.colorbox({href:"/signup", width: "400px", height: "200px"});
    return false;
  <% end %>
  return true;
}

$(".upload-pics").click(function(){
  var x = checkLogin();
  if(!x){
    return false;
  }