jQuery不会在下拉列表中触发更改事件

时间:2017-03-31 07:57:47

标签: javascript jquery wordpress

我试图在jQuery(wordpress)中触发下拉列表更改事件,但它无效。

jQuery("select.buDropDown").each(function() { this.selectedIndex = 0 }).trigger('change');

在控制台中运行此选项只会将selectedIndex更改为0,但永远不会触发显示/隐藏页面上某些元素的更改事件。

但是,在控制台中运行此功能,一切都可以正常启动:

$("select.buDropDown").each(function() { this.selectedIndex = 0 }).trigger('change');

我找不到任何理由" $"会工作,但不是" jQuery"

我尝试将其包装成:

jQuery(function($) {} 

能够使用$代替,但在wordpress代码中它仍然没有触发更改事件

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

您的问题是您在关闭每个循环后调用触发器功能。这绝不会发生。以下方法可行:

jQuery("select.buDropDown").each(function() { 
    this.selectedIndex = 0;
    jQuery(this).trigger('change'); 
});

顺便说一句,以下声明:

$("select.buDropDown").each(function() { this.selectedIndex = 0 }).trigger('change');

这意味着选择select.buDropDown的集合并循环此集合,然后触发对此集合的更改。它将仅触发此集合中第一个对象的更改。不是为了整体。

答案 1 :(得分:0)

感谢您的所有贡献,您给了我一些我想要遵循的想法,以下内容适用于我的情况:

$("select.buDropDown").each(function() { 
        this.selectedIndex = 0;
     });
    $('select.buDropDown').parent().children('div').each(function() { $(this).hide(); });

即使下拉列表中各自的更改事件已经处理完毕,重置为原始状态也没问题。

相关问题