Javascript 动态绑定值以双击

Javascript 动态绑定值以双击,javascript,jquery,Javascript,Jquery,我正在使用JQuery和javascript动态创建一个表。我还成功地为每一行绑定了方法,但是当我尝试绑定dblclick事件时,它总是使用最后一行值(在本例中是列表中的最后一个客户): 我想这是我不理解的函数调用的范围或上下文,如果您可以添加一个链接到您的答案,以便我能够了解更多有关问题/解决方案的信息,我将不胜感激 提前感谢试试这个 newRow.ondblclick=function(){ SomeJavaScriptCode }; 您的问题是您在每个i上重置了处理程序,所以侦听器在循环

我正在使用JQuery和javascript动态创建一个表。我还成功地为每一行绑定了方法,但是当我尝试绑定dblclick事件时,它总是使用最后一行值(在本例中是列表中的最后一个客户):

我想这是我不理解的函数调用的范围或上下文,如果您可以添加一个链接到您的答案,以便我能够了解更多有关问题/解决方案的信息,我将不胜感激

提前感谢

试试这个

newRow.ondblclick=function(){ SomeJavaScriptCode };

您的问题是您在每个i上重置了处理程序,所以侦听器在循环结束时将last i作为参数

使用ondblclick,因为您已经使用内联事件处理程序:

var code = customers[i].Cust_Code,
    name = customers[i].Cust_Name;
newRow.attr('ondblclick', 'selectCustomer(' + code + ','  +  name + ')');
在您的情况下,您可以使用委托侦听器,使用以下命令:

 for (var i = 0; i < customers.length; i++) {
            var newRow = $("<tr><td></td><td></td><td></td><td></td><td></td><td></td></tr>");
            newRow.attr('index', i);
            newRow.appendTo(tbl);
 }

根据我的经验,还不如使用mouseenter和mouseleave事件,而不是mouseover和mouseout。但这取决于你。

我认为这样更好

/**
 * In this case using on is much better.
 * check this:
 * http://api.jquery.com/on/
 */
newRow.on("dblclick", {Cust_Code: customers[i].Cust_Code,
                       Cust_Name: customers[i].Cust_Name}, function(event) {
    selectCustomer(event.data.Cust_Code,  event.data.Cust_Name);
});

对我来说很好。检查你的控制台是否有错误。感谢你的时间和额外信息,谢谢。
 for (var i = 0; i < customers.length; i++) {
            var newRow = $("<tr><td></td><td></td><td></td><td></td><td></td><td></td></tr>");
            newRow.attr('index', i);
            newRow.appendTo(tbl);
 }
 $('tr[index]').on('click',rowSelect_Popup($(this).attr('index')))
 .on('onmouseover',rowMouseOver_Popup($(this).attr('index')))
 .on('onmouseout',rowMouseOut_Popup($(this).attr('index')))
 .on('ondblclick',function() { 

 var i = $(this).attr('index'),
     code = customers[i].Cust_Code,
     name = customers[i].Cust_Name;

 selectCustomer(code,name);
 })
/**
 * In this case using on is much better.
 * check this:
 * http://api.jquery.com/on/
 */
newRow.on("dblclick", {Cust_Code: customers[i].Cust_Code,
                       Cust_Name: customers[i].Cust_Name}, function(event) {
    selectCustomer(event.data.Cust_Code,  event.data.Cust_Name);
});