循环内的JavaScript触发器事件

循环内的JavaScript触发器事件,javascript,jquery,javascript-events,each,jquery-callback,Javascript,Jquery,Javascript Events,Each,Jquery Callback,我正在尝试用以前存储的值重新填充表单,问题是许多选择框是用ajax动态加载的,还有其他绑定到更改事件的函数,这些函数根据以前的选择填充选择框 我的问题是,由于某种原因,我无法获得触发更改 这样我的选择框就不会被填充,我就有了代码 要绑定onchange onec,将填充一个框,但无法获取第一个框 触发已更改的事件。如果我输入$mybox.triggerchange 在浏览器控制台中,它可以工作,但在js中不能工作。 值设置正确,但事件永远不会触发 selectBox.valthis.select

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

我的问题是,由于某种原因,我无法获得触发更改 这样我的选择框就不会被填充,我就有了代码 要绑定onchange onec,将填充一个框,但无法获取第一个框 触发已更改的事件。如果我输入$mybox.triggerchange 在浏览器控制台中,它可以工作,但在js中不能工作。 值设置正确,但事件永远不会触发

selectBox.valthis.selectedValue.prop'disabled',this.disabled.triggerchange

这就是表单最初的外观

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


Ook找到了答案。change works我的问题是我在$document内调用它。ready,但我也在那里绑定。结果发现我的更改是在绑定函数之前被调用的。我所要做的就是在$window中调用change事件。load(加载)

整个方法有点古怪,因为我不确定您试图实现什么。不过,也就是说,绑定应该在作为动态添加元素或更高级别元素的父级的dom元素上完成。例如,在文档对象上-这是因为侦听器是在第一次构造dom时设置的。因此,我们:

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

vs

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


第一种方法不会触发回调和绑定到它的后续事件。第二个会。我可能错了,但我怀疑这正是您想要做的。

为什么要使用$+this.id而不是$this?jQuery还可以绑定到DOM元素。您不必总是使用选择器。而且为什么要将disabled设置为this.disabled的值?在我的上下文中,这是数组中为每个表单元素存储值的元素$+this.id是dom中需要使用此值填充的同一元素。您能告诉我们如何正常设置选择值吗?某些选择框具有函数这些函数绑定到其更改事件,并根据选择填充下面的选择框。我只是在某个点捕获所有框的值。刷新表单后,不会选择任何内容,因此我运行函数尝试重新填充框并恢复表单状态。当我在第一个选择框中选择一个值时,我需要等待它的函数填充下一个框,以此类推。我可以设置该值,但无法触发更改事件,因此下一个框将具有值。我只需要在为选择框元素$Myelementvalthis.selectedValue.prop'disabled',this.disabled.triggerchange设置值后触发更改事件;将更新该值,并且在该值上可见,但更改事件从未被触发,因此绑定到它的函数从未被触发。prop不会返回jquery对象,因此您不能像您尝试的那样触发事件。之后单独触发。我试过了,没什么区别。我试过分开运行,没有改变,没有道具,没有区别$Myelement.valthis.selectedValue$Myelement.triggerchange;值已发送,但更改事件从未触发。我的问题是事件不会被触发,而不是我的循环中的绑定。
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;
                }
            });  
     };