jquery在每个循环内单击函数

时间:2014-07-08 22:15:04

标签: javascript jquery

我在下面有这个代码我试图从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]);

                            }
                        });

1 个答案:

答案 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]);

    }
});