[英]jQuery .trigger("change") not working
我无法让.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();
}
});
应在调用.trigger('change')
或.change()
之前定义更改事件处理程序
下面是2个场景。
场景 1:更改事件在定义之前被调用。
$(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');
});
对我来说,当我使用方案 2 时,问题已解决。 希望这可以帮助!!
有时不需要使用触发器:
// 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();
这是使用 id 语法的工作版本:
$(document).ready(function () {
$('select[id=car]').change(function () {
alert("change: " + $(this).val());
});
$("#car").trigger('change');
});
$('#selector').change();
或者
$('#selector').trigger('change');
//第二个对我有用。 但是您应该在更改事件的定义之后调用它
用这个:
jQuery("#DROPDOWNID").trigger("change");
你能检查给定的链接演示吗
HTML 代码
<select id="car">
<option value="volvo">Volvo</option>
<option value="saab">Saab</option>
<option value="opel">Opel</option>
<option value="audi">Audi</option>
</select>
jQuery代码
$(document).ready(function(){
$("#car").change(function(){
alert("change");
});
$("#car").trigger('change');
});
结果 :
它发出警报
从所有选择器中删除id=并将其替换为#selected id
.change()
事件一直等到输入字段失去焦点,因此在您单击或跳出该字段之前不会触发它。
所以你可以像这样在.change()
.blur()
事件:
var $element = jQuery("select[id='DROPDOWNID']");
$element.change(function () { ... });
$element.blur();
或者您可以使用另一个事件来代替.change()
,例如.keyup()
、 .paste()
等。
我很惊讶没有人提到这一点,但是当jQuery("select[id='DROPDOWNID']").trigger("change")
没有完成这项工作时(比如尝试使用 Tampermonkey 模拟角度代码的变化时) jQuery("select[id='DROPDOWNID']")[0].dispatchEvent(new Event('change'))
确实
试试这个,它应该工作
$('#selector').change();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.