循环内的JavaScript触发器事件
我正在尝试用以前存储的值重新填充表单,问题是许多选择框是用ajax动态加载的,还有其他绑定到更改事件的函数,这些函数根据以前的选择填充选择框 我的问题是,由于某种原因,我无法获得触发更改 这样我的选择框就不会被填充,我就有了代码 要绑定onchange onec,将填充一个框,但无法获取第一个框 触发已更改的事件。如果我输入$mybox.triggerchange 在浏览器控制台中,它可以工作,但在js中不能工作。 值设置正确,但事件永远不会触发 selectBox.valthis.selectedValue.prop'disabled',this.disabled.triggerchange 这就是表单最初的外观 选择一个值后,将触发更改事件,并使用选项动态填充下一个框。现在它已启用并具有选项。我的问题是,我无法以编程方式触发更改事件,以便填充下一个框循环内的JavaScript触发器事件,javascript,jquery,javascript-events,each,jquery-callback,Javascript,Jquery,Javascript Events,Each,Jquery Callback,我正在尝试用以前存储的值重新填充表单,问题是许多选择框是用ajax动态加载的,还有其他绑定到更改事件的函数,这些函数根据以前的选择填充选择框 我的问题是,由于某种原因,我无法获得触发更改 这样我的选择框就不会被填充,我就有了代码 要绑定onchange onec,将填充一个框,但无法获取第一个框 触发已更改的事件。如果我输入$mybox.triggerchange 在浏览器控制台中,它可以工作,但在js中不能工作。 值设置正确,但事件永远不会触发 selectBox.valthis.select
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;
}
});
};