我正在尝试在下拉列表中模拟onclick
事件。
我有一个IE对象转到某个页面,我需要更改一个有onchange
事件的下拉列表:
$('select[name="blah"]').val(3).trigger('change');
$('select[name="blah"]').change(function(){
alert('changed');
});
当我尝试这个时,我希望警报可以触发,因为它在技术上是onchange
。
有没有办法来实现这个目标?
更多详情
我的工具是通过一个对象控制另一个IE页面。它导航到页面并在页面上找到选择下拉列表。从那里,如果你手动完成,它在进行选择时会有一个onchange事件。
我正在尝试让jQuery进行模拟,就好像它被一个人点击它触发更改事件一样。
我已尝试.trigger
和.change
,但无法使其中任何一个工作。
答案 0 :(得分:1)
您的代码不起作用的唯一原因是您执行它的顺序。您需要在触发处理程序之前连接处理程序:
JSFiddle:http://jsfiddle.net/3y5hmyf0/1/
// Wire up event handler
$('select[name="blah"]').change(function(){
alert('changed');
});
// Now generate the event
$('select[name="blah"]').val(3).trigger('change');
注意:仍然需要手动change
触发器,因为通常必须由用户交互触发更改事件。设置值是不够的。
答案 1 :(得分:0)
$('select[name="blah"]').change(function(){
NotifyChanged();
});
function NotifyChanged() {
alert('changed');
}
如果你想测试改变的功能中的逻辑,只需要调用它。