我可以捕获js触发的更改事件吗?

时间:2016-07-18 14:51:54

标签: javascript jquery html

当用户点击它时,我可以使用jquery轻松捕获选择选项的更改事件,但是如果javascript更改了选择值,则“更改”事件永远不会触发,需要手动触发。

是否可以在不需要trigger('change')的情况下捕获值的变化?

示例小提琴:history API

1 个答案:

答案 0 :(得分:3)

  

是否可以在不需要trigger('change')的情况下捕获值的变化?

没有。当JavaScript代码设置select的值时,不会触发任何事件。所以你的选择是:

  1. 您可以在响应change事件时以及代码更改值时调用一个常用功能(可能会集中更改值,因此您不要忘记调用它)。

  2. .trigger('change')

  3. 轮询该值以查看其是否发生变化(blech)。

  4. Re#1和#2,你可以给自己一个valWithNotify

    $.fn.valWithNotify = function(arg) {
        if (arguments.length == 0) {
            return this.val();
        }
        return this.each(function() {
            $(this).val(arg).trigger("js-change"); // or just "change", but I'm not a
                                                   // fan of synthetic user events
        });
    };