Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/478.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.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 动态分配按钮ID并通过$.proxy()传递_Javascript_Jquery - Fatal编程技术网

Javascript 动态分配按钮ID并通过$.proxy()传递

Javascript 动态分配按钮ID并通过$.proxy()传递,javascript,jquery,Javascript,Jquery,使用each函数创建多个按钮。我如何给每个按钮一个id?基本上,我需要能够将按钮id传递给myFunc 这是我尝试过的,但没有运气 var count=0; $.each(xc, function(i, stNum) { count++; $('<input class="colBtn" type="button">') .prop('id', 'p'+count) .on('click', $.proxy(myFunc, this.id)) .app

使用each函数创建多个按钮。我如何给每个按钮一个id?基本上,我需要能够将按钮id传递给
myFunc

这是我尝试过的,但没有运气

var count=0;
$.each(xc, function(i, stNum) {
    count++;
$('<input class="colBtn" type="button">')
    .prop('id', 'p'+count)
    .on('click', $.proxy(myFunc, this.id))
    .appendTo ('#par2');
});

function myFunc(theID){
    alert(theID); //currently undefined
}
var计数=0;
$.each(xc,function(i,stNum){
计数++;
$('')
.prop('id','p'+计数)
.on('click',$.proxy(myFunc,this.id))
.appendTo(“#par2”);
});
函数myFunc(theID){
警报(theID);//当前未定义
}

在这种情况下,更好的模式是委托事件处理程序。这样,您就不需要在每次迭代中附加事件挂钩,并且可以使用单个处理程序从单击的元素中读取
id
属性。试试这个:

$.each(xc, function (i, color) {
    $('<input class="colBtn" type="button" />')
        .prop('id', 'p' + i)
        .appendTo('#par2');
});

$('#par2').on('click', '.colBtn', function() {
    alert(this.id);
});

谢谢,看起来不错。但是,如果我需要传递类似于
.on('click',$.proxy(myFunc,this.id,color[0])之类的内容,该怎么办?
?再次感谢。让我尝试在代码中实现您的建议。:)没问题,很乐意帮忙
$.each(xc, function (i, color) {
    $('<input class="colBtn" type="button" />')
        .prop('id', 'p' + i)
        .data('color', color[0])
        .appendTo('#par2');
});

$('#par2').on('click', '.colBtn', function() {
    alert(this.id);
    alert($(this).data('color'));
});