【问题标题】:jQuery capture the change event of a dropdown when change is performed by JavaScriptjQuery 在 JavaScript 执行更改时捕获下拉列表的更改事件
【发布时间】:2012-09-18 15:55:31
【问题描述】:

我希望能够使用 jQuery 检测下拉列表的选定值何时发生变化。下拉列表的选定值被其他 JavaScript 更改,所以我希望能够捕捉到这个事件。

我可以看到下拉列表发生变化,但是以下代码未正确捕获事件。 change 事件是否只捕获由用户执行的事件而不是其他代码?

$('select[name=b_country]').live('change', function() {
    alert('the country dropdown has changed');
});

<select name="b_country" style="display: block;">

【问题讨论】:

    标签: javascript jquery html-select jquery-1.7


    【解决方案1】:

    是的,只有用户交互会触发该事件。否则,如果不进入无限循环,您将无法(重新)设置侦听器中的值。

    如果您想通知其他(侦听)脚本您更改了值,您可以手动触发事件。使用 jQuery,这很容易:

    $('select[name=b_country]').val(…).change();
    

    【讨论】:

    • 我这里的问题是更改b_country 下拉列表的代码不是我的。它是第三方 JavaScript,我无法控制它。有没有其他方法可以在更改时捕获?
    • 没有。如果该第三方脚本不提供适当的 API(挂钩此类事件等),我建议使用另一个。
    • 这令人沮丧。我原以为你可以监听 DOM 中的特定元素,当它改变状态时,无论如何,你都可以捕捉到变化。
    • 我使用的 API 没有记录回调,但是他们的支持渠道已经告知他们确实存在。这让我能够实现我需要的功能。
    • 呃,使用未记录的功能就像是 hack ;-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-25
    • 2014-12-11
    相关资源
    最近更新 更多