循环内的JavaScript触发事件

时间:2014-10-03 20:06:07

标签: javascript jquery javascript-events each jquery-callback

我正在尝试重新填充具有先前存储的值的表单,问题是许多选择框是使用ajax动态加载的,并且还有其他函数绑定到根据先前选择填充选择框的更改“事件”。

  • 我的问题是由于某些原因我无法得到.trigger("change") 工作,所以我的选择框不会填充,我有代码 要绑定onchange onec,就会填充一个框,但是无法获得第一个框 触发改变的事件。如果我输入$(“#mybox”)。触发(“更改”) 在浏览器控制台中它可以工作,但不能在js。

值设置正常但事件永远不会被触发

selectBox.val(this.selectedValue).prop('disabled', this.disabled).trigger("change");

function repopulateForm(data){
     $(data).each(function () {
                switch (this.type) {
                    case "input":
                        $("#" + this.id).val(this.value).prop('disabled', this.disabled);
                        break;
                    case "checkbox":
                        $("#" + this.id).prop('checked', this.isCheckedBox).prop('disabled', this.disabled).trigger("change");
                        break;
                    case "select":
                        var selectBox = $("#" + this.id);
                        //Check if the select box has options
                        if (selectBox[0].length > 1) {/

                            if (this.disabled == false) //ignore disabled 
                                selectBox.val(this.selectedValue).prop('disabled', this.disabled).trigger("change");
                        }
                        else {
                            //Bind to element untill its filled
                            $(selectBox).one("change", this, function (event) {
                            data=event.data;
                                $("#" + data.id).val(data.selectedValue).prop('disabled', data.disabled).trigger("change");;
                            });
                            var test;
                        }
                        break;
                }
            });  
     };

这是表格最初的样子

Initial State

在我选择一个值后,触发更改事件,并使用选项动态填充下一个框。现在它已启用并有选项。我的问题是我无法以编程方式触发更改事件,因此可以填充下一个框。

After CLick

2 个答案:

答案 0 :(得分:0)

Ook想出来.change()工作我的问题是我在$(document).ready()里面调用它但我也绑定在那里它发现我的变化在绑定函数之前被调用了所有我不得不做的事情在$(window).load()

中调用更改事件

答案 1 :(得分:0)

整个方法有点时髦,因为我不确定你想要完成什么。尽管如此,绑定应该在dom元素上完成,该元素是动态添加元素的父级或更高级元素。例如,在"文件" object - 那是因为第一次构造dom时设置了侦听器。所以我们有:

$(myElement).on('event',function(e){ doSomethingHere}); - myElement不会触发回调

vs

$(document).on('event', 'myElement', function(e){ doSomethingHere })。 - myElement将触发回调

第一种方法不会触发回调和后续绑定的事件。第二个会。我可能错了,但我怀疑你正在尝试做什么。