jQuery模拟onClick

时间:2014-09-02 20:30:35

标签: javascript jquery

我正在尝试在下拉列表中模拟onclick事件。

我有一个IE对象转到某个页面,我需要更改一个有onchange事件的下拉列表:

$('select[name="blah"]').val(3).trigger('change');


$('select[name="blah"]').change(function(){
   alert('changed'); 
});

当我尝试这个时,我希望警报可以触发,因为它在技术上是onchange

http://jsfiddle.net/3y5hmyf0/

有没有办法来实现这个目标?

更多详情

我的工具是通过一个对象控制另一个IE页面。它导航到页面并在页面上找到选择下拉列表。从那里,如果你手动完成,它在进行选择时会有一个onchange事件。

我正在尝试让jQuery进行模拟,就好像它被一个人点击它触发更改事件一样。

我已尝试.trigger.change,但无法使其中任何一个工作。

2 个答案:

答案 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'); 
}

如果你想测试改变的功能中的逻辑,只需要调用它。