我在下面有这个代码我试图从click函数中获取id但是this.id现在可以在click函数中运行我认为因为代码在clicked之前不会运行任何人都知道一种方法来获取每个循环运行时的id?
$(html).each(function() {
if($( this ).filter('.target').html()){
window["button"+this.id] = {
text: "Edit "+$($(html).filter('#'+this.id).html()).filter('#A1').text(),
click: function() {
$('#2').html($($(html).filter('#'+this.id).html()).filter('#B2').text());
var start = $($( html ).filter('#'+this.id).html()).filter('#A1').text();
$("#start").val(start);
var finish = $($(html).filter('#'+this.id).html()).filter('#A2').text();
$("#finish").val(finish);
var breaktime = $($(html).filter('#'+this.id).html()).filter('#A3').text();
$("#break").val(breaktime);
var grade = $($(html).filter('#'+this.id).html()).filter('#A4').text();
$("#grade").val(grade);
var PM = $($(html).filter('#'+this.id).html()).filter('#A9').text();
if(PM == '1') { $('#PM').prop('checked', true); }else{ $('#PM').prop('checked', false); }
var NS = $($(html).filter('#'+this.id).html()).filter('#NS').text();
if(NS == '1') { $('#NS').prop('checked', true); }else{ $('#NS').prop('checked', false); }
var RDO = $($(html).filter('#'+this.id).html()).filter('#A12').text();
if(RDO == '1') { $('#RDO').prop('checked', true); }else{ $('#RDO').prop('checked', false); }
var OrdHours = $($(html).filter('#'+this.id).html()).filter('#A5').text();
$("#ordhrs").val(OrdHours);
var x150 = $($(html).filter('#'+this.id).html()).filter('#A11').text();
$("#OTx150").val(x150);
var departmentID = $($(html).filter('#'+this.id).html()).filter('#A6').text();
$("select#ChangeDeparment").val(departmentID);
total = $($(html).filter('#'+this.id).html()).filter('#A8').html();
totalhrs = $($(html).filter('#'+this.id).html()).filter('#A7').html();
$("#total").html(totalhrs +"<br />" +total);
adjustmentID = $($(html).filter('#'+this.id).html()).filter('#B1').text();
no_adjustment = false;
$( this ).dialog( "close" );
}
}
newArray.push(window["button"+this.id]);
}
});
答案 0 :(得分:1)
将此定义为变量以保持范围
var self = this;
下面的完整示例
$(html).each(function() {
var self = this;
if ($(self).filter('.target').html()) {
window["button" + self.id] = {
text: "Edit " + $($(html).filter('#' + self.id).html()).filter('#A1').text(),
click: function() {
$('#2').html($($(html).filter('#' + self.id).html()).filter('#B2').text());
var start = $($(html).filter('#' + self.id).html()).filter('#A1').text();
$("#start").val(start);
var finish = $($(html).filter('#' + self.id).html()).filter('#A2').text();
$("#finish").val(finish);
var breaktime = $($(html).filter('#' + self.id).html()).filter('#A3').text();
$("#break").val(breaktime);
var grade = $($(html).filter('#' + self.id).html()).filter('#A4').text();
$("#grade").val(grade);
var PM = $($(html).filter('#' + self.id).html()).filter('#A9').text();
if (PM == '1') {
$('#PM').prop('checked', true);
} else {
$('#PM').prop('checked', false);
}
var NS = $($(html).filter('#' + self.id).html()).filter('#NS').text();
if (NS == '1') {
$('#NS').prop('checked', true);
} else {
$('#NS').prop('checked', false);
}
var RDO = $($(html).filter('#' + self.id).html()).filter('#A12').text();
if (RDO == '1') {
$('#RDO').prop('checked', true);
} else {
$('#RDO').prop('checked', false);
}
var OrdHours = $($(html).filter('#' + self.id).html()).filter('#A5').text();
$("#ordhrs").val(OrdHours);
var x150 = $($(html).filter('#' + self.id).html()).filter('#A11').text();
$("#OTx150").val(x150);
var departmentID = $($(html).filter('#' + self.id).html()).filter('#A6').text();
$("select#ChangeDeparment").val(departmentID);
total = $($(html).filter('#' + self.id).html()).filter('#A8').html();
totalhrs = $($(html).filter('#' + self.id).html()).filter('#A7').html();
$("#total").html(totalhrs + "<br />" + total);
adjustmentID = $($(html).filter('#' + self.id).html()).filter('#B1').text();
no_adjustment = false;
$(self).dialog("close");
}
}
newArray.push(window["button" + self.id]);
}
});