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();