gpt4 book ai didi

javascript - 不能使用闭包权

转载 作者:行者123 更新时间:2023-11-30 13:07:55 25 4
gpt4 key购买 nike

我编写了 JS 函数,它必须根据数组中的值绑定(bind)它生成的按钮。但它给了我最后的值(value)。我读到我必须使用闭包,我做到了,但我仍然无法正确绑定(bind)它们!我还是初学者我阅读了关于关闭的内容,我明白了,但仍然不知道我错过了什么

function addNewServices(newServicesArray){
var j=0; var x;
for (i in newServicesArray){
var html='';

html='<div style="width: 33%; float: leftt"><a href="#" data-role="button" data-icon="home" id="btn-'+newServicesArray[j].servicename+'" value="'+newServicesArray[j].servicename+'" class="ui-btn-up-c">'+newServicesArray[j].servicename+'</a></div>';
$("#main-menu").append(html);


$('#btn-'+newServicesArray[j].servicename).bind('click', function (){bindThis(j)});
j++;
}

var bindThis = function( j ) {
return function() {
alert(j); // gives 2 always
alert( newServicesArray[j].servicename );
};
};
}

最佳答案

您不必在循环中绑定(bind)点击...您可以通过函数中的 $(this) 获取点击的引用..

尽可能简单..

function addNewServices(newServicesArray){
var j=0;
for (i in newServicesArray){
var html='';

html='<div style="width: 33%; float: left"><a href="#" data-role="button" data-icon="home" id="btn-'+newServicesArray[j].servicename+'" value="'+newServicesArray[j].servicename+'" class="ui-btn-up-c">'+newServicesArray[j].servicename+'</a></div>';

$("#main-menu").append(html);


}
}

$(function(){
$(document).on('click','a[id^="btn-"]',function (){
var $this = $(this);
alert($this.attr('value'));
});
});

关于javascript - 不能使用闭包权,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14975940/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com