gpt4 book ai didi

JavaScript 循环内触发事件

转载 作者:行者123 更新时间:2023-12-01 05:46:42 28 4
gpt4 key购买 nike

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

  • 我的问题是,由于某种原因,我无法获取 .trigger("change")工作,这样我的选择框就不会被填充,并且我有代码一旦填充了一个框但无法获取第一个框就绑定(bind)onchange触发更改的事件。如果我输入 $("#mybox").trigger("change")在浏览器控制台中它可以工作,但在 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

最佳答案

整个方法有点时髦,因为我不确定你想要完成什么。尽管如此,绑定(bind)应该在动态添加元素或更高元素的父元素的 dom 元素上完成。例如,在“文档”对象上 - 这是因为第一次构建 dom 时设置了监听器。所以我们有:

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

对比

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

第一种方法不会触发回调以及与其绑定(bind)的后续事件。第二个会。我可能是错的,但我怀疑这就是你想要做的。

关于JavaScript 循环内触发事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26186010/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com