将参数传递给点击事件内的匿名函数

Fre*_*ind 2 javascript jquery function

var div_raw_id = 'acf-download-link';
var div_id = '#' + div_raw_id; 
var chapter_index = 1;
var chapter = 'chapter-' + chapter_index;

$('button[name=addnewchapter]').click(function(chapter, div_id ,div_raw_id){
    $(div_id).append('<div class="acf-input-wrap"><input id="' + div_raw_id +'" class="text" name="fields[field_55951fb44c1d6][' + chapter + '][]" value="" placeholder="" type="text"><span class="remove_btn"></span></div>');
    return false;
});
Run Code Online (Sandbox Code Playgroud)

问题是我无法将div_id, chapter_index,chapter作为参数传递给单击事件内的匿名函数。我使用了调试器,调试器将它们表示为未定义的值,即使它们是在上面的代码中定义的。似乎存在变量范围问题,但是,我无法找出任何其他方法将定义的变量作为参数传递给单击事件内的匿名函数。

lmg*_*ves 5

您不需要将开头定义的变量作为参数传递,只需在函数内部使用它即可:

var div_raw_id = 'acf-download-link';
var div_id = '#' + div_raw_id; 
var chapter_index = 1;
var chapter = 'chapter-' + chapter_index;

$('button[name=addnewchapter]').click(function(){
    $(div_id).append('<div class="acf-input-wrap"><input id="' + div_raw_id +'" class="text" name="fields[field_55951fb44c1d6][' + chapter + '][]" value="" placeholder="" type="text"><span class="remove_btn"></span></div>');
    return false;
});
Run Code Online (Sandbox Code Playgroud)

  • 这可能不是您想要的答案,您可以访问变量,但这些变量的值并不固定为您可能认为的值。尝试在单击定义后添加语句chapter = 'chappie -' + Chapter_index,然后单击按钮。 (2认同)