Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.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 jQuery动态onclick_Javascript_Jquery - Fatal编程技术网

Javascript jQuery动态onclick

Javascript jQuery动态onclick,javascript,jquery,Javascript,Jquery,我试图通过这种方式将动态onclick添加到行中 function addStudent(data) { var row = $('#students').append('<tr itemId="' + data.ID + '" ></tr>'); row.on("click", function () { console.log(data.ID); // THIS IS JUST FOR TESTING //loadSt

我试图通过这种方式将动态onclick添加到行中

function addStudent(data) {
    var row = $('#students').append('<tr itemId="' + data.ID + '" ></tr>');
    row.on("click", function () {
        console.log(data.ID);  // THIS IS JUST FOR TESTING
        //loadStudent(data);
    });
}
函数addStudent(数据){
变量行=$(“#学生”).append(“”);
行上(“单击”,函数(){
console.log(data.ID);//这只是为了测试
//学生(数据);
});
}
为什么在控制台中单击一行就可以得到所有ID

问题?

单击任意一行,我就可以在控制台中获得本例的所有数据或学生ID

编辑

请注意这里的data.ID就是一个例子,因为您可以看到我注释掉了真实代码,在这里我将完整对象传递给另一个方法

为什么在控制台中单击一行就可以得到所有ID

因为每次调用
addStudent
,都会在函数中绑定一个额外的click处理程序

使用委托将单击处理程序绑定到函数外部

为什么在控制台中单击一行就可以得到所有ID

因为每次调用
addStudent
,都会在函数中绑定一个额外的click处理程序

使用委托将单击处理程序绑定到函数外部


要将单击事件附加到
,需要这样编写:

$('<tr itemId="' + data.ID + '" ></tr>').appendTo('#students').on("click", function () {
        console.log(data.ID);
        //loadStudent(data);
    });
$('<tr itemId="' + data.ID + '" ></tr>').appendTo('#students').on("click", { value: data }, function () {            
        var theData = event.data.value;
        console.log(theData.ID);
        //loadStudent(theData);
    });

有关此概念的更多信息,请参见。

要将单击事件附加到
,您需要这样编写:

$('<tr itemId="' + data.ID + '" ></tr>').appendTo('#students').on("click", function () {
        console.log(data.ID);
        //loadStudent(data);
    });
$('<tr itemId="' + data.ID + '" ></tr>').appendTo('#students').on("click", { value: data }, function () {            
        var theData = event.data.value;
        console.log(theData.ID);
        //loadStudent(theData);
    });

有关此概念的更多信息,请参阅。

事件委派是答案请不要忘记我要将数据传递给另一个功能侧注释的要点,请使用
data-*
attributes,
data itemId
。事件委派是答案请不要忘记我要将数据传递给另一个功能侧注释的要点,在此处使用
data-*
属性,
data itemId