2010-10-04 102 views
0

基本上,我试图传递一个变量,该变量是在for循环中解析的JSON数组中定义的,以便在Click语句中可访问。JavaScript将循环变量从一个循环传递到点击函数

$(document).ready(function() { 
    getJSON(); 
    var usedID; 
}); 
function readJSON() { 
    for (var i = 0; i < json.array.length; i ++) { 
    usedID = json.array[i].id; 
    var template = $('repeaterTemplate').clone(); 
    template.removeAttr('id'); 
    template.attr('id', 'k' + json.array.id); 
    var omega = json.array.id;   
    $('#repeater').append(template); 
    (function(o) { 
    $('#' + o).click(function() { 
    // this is where the submitID click function is now. It passes the omega value in 

    }); 
    })(omega); 

} 
} 
$('.submitID').click(function() { 
    submitNow(usedID); 
    } 

现在我有submitID点击功能在我的for循环和它造成submitNOW功能的循环周期,通过被称为然而很多次。任何人都可以帮助我将readJSON()的用户ID传递给click函数吗?

我得到解析错误您的每一个功能:

var userID = []; 
var j = 0; 
$('.submitNOW').each(function() { 
    function(id) { 
$(this).click(function() { 
    submitNow(id); 
}); 
    }(userID[j]); 
}); 
+0

所以你想让每个'.submitID'元素为'userID'调用'submitNow'不同的值?或所有的价值相同? – lincolnk 2010-10-04 19:15:35

+1

您可能想要考虑使用jQuery的'each'方法遍历数据,它会减少您在那里获得的一些循环样式。 – 2010-10-04 19:15:47

+0

您正在for循环中获取“usedID”值。所以,预计会有多个ID。你想要通过哪一个? – 2010-10-04 19:15:50

回答

0

我认为你正在试图做这样的事情,但你没有任何办法到一个特定的用户ID与关联特定元素。

此示例按遇到顺序将.submitID元素按遇到的顺序提供给用户标识。它还假定有相同数量的用户标识和元素。

/* this is a non-working example */ 

var usedIDs = []; 

function readJSON() { 
    for (var i = 0; i < json.array.length; i++) { 
     usedIDs.push(json.array[i].id); 
     moreFunctions(); 
     moreStuff(); 
    } 
} 

var j = 0; 

$('.submitID').each(function() { 

    function (id) { 
     $(this).click(function() { 
      submitNow(id); 
     }); 
    }(usedIDs[j]); 

    j++; 

}); 

编辑:根据您的文章修订,这是我最好的猜测,你正在尝试做什么。

function readJSON() { 

    for (var i = 0; i < json.array.length; i++) { 

     var usedID = json.array[i].id; 

     var template = $('repeaterTemplate').clone(); 
     template.removeAttr('id'); 
     template.attr('id', 'k' + usedID); 
     $('#repeater').append(template); 

     (function (o) { 
      // assumign template is a jQuery object here; if not use $(template) instead 
      template.click(function() { 
       // this is where the submitID click function is now. It passes the omega value in 
       submitNow(o); 
      }); 
     })(usedID); 

    } 
} 
+0

嘿,看看我的代码示例顶部。我得到一个解析错误,你的例子每个函数 – Sachin 2010-10-04 20:01:20

+0

@fordays''''之前'(userID [j]);'保持你的酷! :) – 2010-10-04 20:15:54

相关问题