Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/423.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将参数传递给click事件中的匿名函数 var div_raw_id='acf下载链接'; 变量div_id='#'+div_原始id; var章_指数=1; 风险值章节='章节-'+章节索引; $('button[name=addnewchapter]')。单击(函数(章节,分区id,分区原始id){ $(div_id).append(“”); 返回false; });_Javascript_Jquery_Function - Fatal编程技术网

Javascript 将参数传递给click事件中的匿名函数 var div_raw_id='acf下载链接'; 变量div_id='#'+div_原始id; var章_指数=1; 风险值章节='章节-'+章节索引; $('button[name=addnewchapter]')。单击(函数(章节,分区id,分区原始id){ $(div_id).append(“”); 返回false; });

Javascript 将参数传递给click事件中的匿名函数 var div_raw_id='acf下载链接'; 变量div_id='#'+div_原始id; var章_指数=1; 风险值章节='章节-'+章节索引; $('button[name=addnewchapter]')。单击(函数(章节,分区id,分区原始id){ $(div_id).append(“”); 返回false; });,javascript,jquery,function,Javascript,Jquery,Function,问题是我无法将div\u id、chapter\u index、chapter作为参数传递给click事件中的匿名函数。我使用了调试器,调试器将它们表示为未定义的值,即使它们是在上面的代码中定义的。似乎存在变量范围问题,但是,我无法找到任何其他方法将定义的变量作为参数传递给click事件中的匿名函数。您不需要将开始时定义的变量作为参数传递,只需在函数中使用它: var div_raw_id = 'acf-download-link'; var div_id = '#' + div_raw_id;

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

您不需要将开始时定义的变量作为参数传递,只需在函数中使用它:

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;
});
var div_raw_id='acf下载链接';
变量div_id='#'+div_原始id;
var章_指数=1;
风险值章节='章节-'+章节索引;
$('button[name=addnewchapter]')。单击(函数(){
$(div_id).append(“”);
返回false;
});
多亏了您的点击处理程序,它与变量
div\u raw\u id、div\u raw\u id、chapter\u index、chapter
定义在同一级别

这意味着,如果给回调函数参数赋予相同的名称,回调函数将无法再看到具有相同名称的外部参数

因此,仍应定义章节索引。第一个参数
chapter
将是jQuery传递的第一个参数(事件对象)。最后2个参数将设置为
未定义的

您可以传递任何想要传递给事件处理程序的参数(没有字符串,因为它将用作选择器,最好是对象)

有关参数的更多信息,请参阅的文档

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;
});
var eventData={
“div_id”:“acf下载链接”
,“第章”:1
};
$('button[name=addnewchapter]')。在(“单击”,事件数据,函数(e){
$(“#”+e.data.div_id)
.附加(“”);
返回false;
});

您不必将其作为参数传递到函数中。只要使用它里面的变量,我想你不需要把它们作为参数传递。只需在函数中直接使用它们。因为它们是在全球范围内定义的scope@MikeBoutin我已经包括了代码。我只是想在每次点击按钮时在表单中添加一个输入字段,到底是什么让您困惑?-><代码>数据
:“当事件被触发时,将在event.data中传递给处理程序的数据。”这是有效的,因为匿名函数在闭包中捕获了这些变量。Doh!我非常感激。我刚刚接触javascript。我想知道为什么会允许这样的事情,我们是否允许在新创建的函数中使用函数定义的变量之外的变量,为什么允许这样的事情?@FreeMind-阅读闭包。这可能不是你想要的答案,你可以访问变量,但是这些变量的值并不是固定在你可能认为的值上。尝试在定义单击后添加语句chapter='chappie-'+chapter_索引,然后单击按钮。传递给匿名函数的
e
参数是什么?我怎么知道我必须传递这样神秘的参数呢?注册的事件处理程序将始终传递一个对象作为第一个参数->。
.on()
方法的文档中也提到了这一点
var eventData = {
    "div_id": "acf-download-link"
    ,"chapter": 1
};

$('button[name=addnewchapter]').on("click", eventData, function(e){
    $("#" + e.data.div_id)
        .append('<div class="acf-input-wrap"><input id="' + e.data.div_id + '"'
                + ' class="text" name="fields[field_55951fb44c1d6][chapter-' + e.data.chapter + '][]"'
                + ' value="" placeholder="" type="text"><span class="remove_btn"></span></div>');

    return false;
});