我正在尝试将story_id传递到最内层的内联函数,但它始终为0,即使它在外部函数中不是0。如何传递此值?
function activateSearch(){
if($('story_filter')) Event.observe('story_filter', 'keyup',
function(event) {
$('stories_table').select(".story").each(
function(story) {
story_id = story.id.split('_')[1];
story.select('.tableCell', '.indexCardContent').each(
function(task, story_id) {
hideStoryRow(story_id);
task_filter = new RegExp($F('story_filter'), "i");
if (task.innerHTML.match( task_filter ))
{
showStoryRow(story_id);
throw $break;
}
}
);
}
);
}
);
}
答案 0 :(得分:7)
要做到这一点,你需要做的就是改变这一行:
function(task, story_id) {
到此:
function(task) {
你不必在任何地方传递story_id - 它已经在内部函数的范围内了!
答案 1 :(得分:0)
你没有。每个方法都接受函数定义,然后为Array中的每个元素调用该函数。如果要使用内联函数定义,则需要编写自己的自定义方法。
对于可读性和功能性,我将打破内部最内联函数,然后对列表中的每个元素调用函数。
答案 2 :(得分:-1)
你有一个范围问题。
快速修复:将story_id定义为全局。
var story_id;
function activateSearch() { ....