jQuery .trigger(“更改”)无效

我不能让.trigger("change")去工作。 谁知道为什么?

 jQuery(document).ready(function () { jQuery("select[id='DROPDOWNID']").change(function () { var selectedIndex = jQuery("select[id='DROPDOWNID']").prop('selectedIndex'); switch (selectedIndex) { case 0: hideVarforProspekt(); break; case 1: hideOrdervarde(); break; case 2: break; case 3: hideSektor(); break; } }); ** jQuery("select[id='DROPDOWNID']").trigger("change"); ** function hideVarforProspekt() { jQuery("input[id='IDFROMSHAREPOINT']").closest('tr').hide(); } function hideSektor() { jQuery("table[id='IDFROMSHAREPOINT']").closest('tr').hide(); } function hideUppskOrder() { jQuery("input[id='IDFROMSHAREPOINT']").closest('tr').hide(); } }); 

有时不需要使用触发器:

 // use just jQuery("#DROPDOWNID") instead var select = jQuery("select[id='DROPDOWNID']"); // placing the handler in separate function var changeHandler = function () { var selectedIndex = select.prop('selectedIndex'); switch(selectedIndex) { case 0: hideVarforProspekt(); break; case 1: hideOrdervarde(); break; case 2: break; case 3: hideSektor(); break; } } // cache your jQuery selectors. It's a good practice // and improves the readability select.change(changeHandler); // triggering changeHandler(); 

应在调用.trigger('change').change()之前定义更改事件处理程序

以下是两种情况。

场景1:在定义之前调用change事件的位置。

  $(document).ready(function() { $('#selector').change(); or $('#selector').trigger('change'); $('#selector').on('change', function(){ }); }); 

场景2:在调用之前定义了更改事件处理程序

 $(document).ready(function() { $('#selector').on('change', function(){ }); $('#selector').change(); or $('#selector').trigger('change'); }); 

对我来说,当我使用scenario2时问题已修复。 希望这可以帮助!!

这是一个使用id语法的工作版本:

 $(document).ready(function () { $('select[id=car]').change(function () { alert("change: " + $(this).val()); }); $("#car").trigger('change'); }); 

的jsfiddle

用过这个:

 jQuery("#DROPDOWNID").trigger("change"); 

你可以查看给定的链接演示

HTML代码

  

Jquery代码

 $(document).ready(function(){ $("#car").change(function(){ alert("change"); }); $("#car").trigger('change'); }); 

结果:

它火警

从所有选择器中删除id =并将其替换为#selected id

.change()事件一直等到输入字段失去焦点,因此在单击或跳出字段之前不会触发它。

所以你可以在.blur()事件之后添加.blur()事件,如下所示:

  var $element = jQuery("select[id='DROPDOWNID']"); $element.change(function () { ... }); $element.blur(); 

或者你可以使用另一个事件而不是.change() ,例如.keyup() .paste()等。

尝试这个,它应该工作

 $('#selector').change();