javascript - 通过 .change() 事件处理程序传递变量

标签 javascript jquery

我有一些链接的年份、品牌、型号、子型号、颜色的选择元素。第一个在加载时通​​过 getJSON 调用填充:

$.getJSON("http://mydomain/something.cfm?get=years",
    function(json) {
        var data = "";
        $.each(json, function(i, v) {
            if(v.name != ""){
                data = data + "<option value='" + v.value + "'>" + v.name + "</option>";
            }
        });
        $(wheelBuilder.YEARS).html(data).removeAttr("disabled");
        if(getUrlVars()["year"] != undefined){
            $(wheelBuilder.YEARS).val(getUrlVars()["year"]);
            $(wheelBuilder.YEARS).change();
        }
    }
);

当用户选择某个项目时,将填充后续的选择元素。 .change() 函数进行 .getJSON() 调用以获取数据以填充每个后续选择元素。 getUrlVars() 函数按名称从查询字符串中获取变量。如果可用,则必须预先选择每个选择元素。为了进行此预选择,必须调用 .change() 函数,以便填充下一个元素。

事情是,只有当从 onload 调用这些 .change() 函数时,我才需要在这些 .change() 函数内部运行代码,而不是当用户手动进行更改时。我注意到 jquery 文档有一个 .change( [eventData ], handler ) 选项用于 .change() 函数,但我不确定这是否可以解决问题或如何使用它(未提供示例)

谢谢。

TLDR:基本上,我试图找到一种方法来区分何时通过代码选择选择选项与何时由人类选择选择选项。

最佳答案

有很多方法可以做到这一点,但如果您使用 jquery,那么最简单的方法可能是检查事件以查找事件起源的迹象。

这里有一个入门指南:http://plnkr.co/edit/wfOQgjzwijw3IlN1PlNq?p=preview

var onChange = function(evnt) {
    console.log("Changed: ", arguments)
}

var $select = $("#mySelect");
$select.change(onChange);

// Manually trigger the change event
$select.change();

控制台中的第一个事件是由 jQuery 触发的。如果您手动去更改组合框,您将获得第二个事件。以下是我可以看到的一些差异:

  • jQuery 触发的事件包含“isTriggered”属性(请参阅:In JavaScript, what is event.isTrigger?)。 我可能会使用这个来确定事件是否是内部触发的。
  • 用户触发的事件包含许多额外的属性,例如:“originalEvent”、“bubbles”、“cancelable”等。

关于javascript - 通过 .change() 事件处理程序传递变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24621898/

相关文章:

javascript - 在 vue.js、quasar 框架中启用复选框检查功能

javascript - 这些代码有什么区别?

javascript - getElementById 不返回元素

用于输入时间的 Javascript 代码

javascript - Plupload uploadprogress 事件总是给 file.percent 作为 100

javascript - 如何在jquery、javascript、HTML5中将base64字符串另存为(PDF、doc、xls、png..)

javascript - 通知Js在底部显示通知

javascript - 如何使html表格的tbody垂直滚动

javascript - Javascript 和 jQuery 中的 Trapping Function not defined 错误

javascript - Jquery 从多个中删除类,将类添加到一个